Skip to content

Commit 35cd0c5

Browse files
authored
add solution and test case for 1721 (fishercoder1534#146)
* added solution and test case for 1721 * merged with master * removed comments and initialized variables on new lines
1 parent 02ed0de commit 35cd0c5

File tree

2 files changed

+76
-0
lines changed

2 files changed

+76
-0
lines changed

src/main/java/com/fishercoder/solutions/_1721.java

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,42 @@ public ListNode swapNodes(ListNode head, int k) {
3030
return tmp.next;
3131
}
3232
}
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+
}
3371
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
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+
}

0 commit comments

Comments
 (0)