File tree 2 files changed +76
-0
lines changed
main/java/com/fishercoder/solutions
test/java/com/fishercoder
2 files changed +76
-0
lines changed Original file line number Diff line number Diff line change @@ -30,4 +30,42 @@ public ListNode swapNodes(ListNode head, int k) {
30
30
return tmp .next ;
31
31
}
32
32
}
33
+ public static class Solution2 {
34
+ public ListNode swapNodes (ListNode head , int k ) {
35
+ if (head == null || head .next == null ){
36
+ return head ;
37
+ }
38
+
39
+ // find length of list
40
+ int n = 0 ;
41
+ ListNode current = head ;
42
+ while (current != null ){
43
+ current = current .next ;
44
+ n ++;
45
+ }
46
+
47
+ int nums [] = new int [n ];
48
+ current = head ;
49
+ int i = 0 ;
50
+ while (current != null ){
51
+ nums [i ++] = current .val ;
52
+ current = current .next ;
53
+ }
54
+ int firstIndex = 0 ;
55
+ int secondIndex = 0 ;
56
+ firstIndex = k ;
57
+ secondIndex = n -k ;
58
+ int temp = nums [firstIndex -1 ];
59
+ nums [firstIndex -1 ] = nums [secondIndex ];
60
+ nums [secondIndex ] = temp ;
61
+ ListNode dummy = new ListNode (-1 );
62
+ current = dummy ;
63
+ for (i = 0 ; i <n ; i ++){
64
+ ListNode node = new ListNode (nums [i ]);
65
+ current .next = node ;
66
+ current = current .next ;
67
+ }
68
+ return dummy .next ;
69
+ }
70
+ }
33
71
}
Original file line number Diff line number Diff line change
1
+ package com .fishercoder ;
2
+
3
+ import com .fishercoder .common .classes .ListNode ;
4
+ import com .fishercoder .solutions ._1721 ;
5
+ import org .junit .BeforeClass ;
6
+ import org .junit .Test ;
7
+
8
+ import static org .junit .Assert .assertEquals ;
9
+
10
+ public class _1721Test {
11
+ private static _1721 .Solution2 solution2 ;
12
+ private static ListNode expected ;
13
+ private static ListNode node ;
14
+ private static int k ;
15
+
16
+ @ BeforeClass
17
+ public static void setup () {
18
+ solution2 = new _1721 .Solution2 ();
19
+ }
20
+
21
+ @ Test
22
+ public void test1 () {
23
+ node = new ListNode (1 );
24
+ node .next = new ListNode (2 );
25
+ node .next .next = new ListNode (3 );
26
+ node .next .next .next = new ListNode (4 );
27
+ node .next .next .next .next = new ListNode (5 );
28
+
29
+ expected = new ListNode (1 );
30
+ expected .next = new ListNode (4 );
31
+ expected .next .next = new ListNode (3 );
32
+ expected .next .next .next = new ListNode (2 );
33
+ expected .next .next .next .next = new ListNode (5 );
34
+
35
+ k = 2 ;
36
+ assertEquals (expected , solution2 .swapNodes (node , k ));
37
+ }
38
+ }
You can’t perform that action at this time.
0 commit comments