Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit c68af7d

Browse files
committed
update
1 parent 906562d commit c68af7d

File tree

3 files changed

+77
-1
lines changed

3 files changed

+77
-1
lines changed
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package DataAndAlgoL.Chp3LinkedLists;
2+
/*
3+
* Josephus Circle: N people have decided to elect a leader by arranging themselves in a circle
4+
* and eleminenting every Mth person arounf the circle, closing ranks as each person drops out
5+
* Find which person will be the last one remaining with rank 1
6+
*
7+
* SOLUTION: Assume the input is a circular linked list with N nodes and each node has a number
8+
* range 1 to N associated with it. Head node has number 1 as data.
9+
*/
10+
public class Problem44 {
11+
public static void main(String[] args) {
12+
13+
}
14+
15+
public ListNode getJosephusPosition(int N, int M){
16+
ListNode p;
17+
ListNode q;
18+
//create circular linked list containing all the players
19+
p.setData(1);
20+
21+
q=p;
22+
23+
for(int i=2; i<= N; i++){
24+
p=p.getNext();
25+
p.setData(i);
26+
}
27+
28+
p.setNext(q); // Close the circular linked list by having the last node point to the first
29+
30+
for(int count=N; count >1; count--){
31+
for(int i=0; i<M-1; i++){
32+
p=p.getNext();
33+
p.setNext(p.getNext().getNext());// remove the eliminated player from the list
34+
}
35+
}
36+
37+
return p;
38+
39+
40+
}
41+
}

LeetCode/Grind169/LinkedLists/PalindromeLinkedList_234.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,4 +60,4 @@ public static boolean isPalindrome(ListNode head) {
6060

6161
return true;
6262
}
63-
}
63+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package Grind169.LinkedLists;
2+
3+
public class RemoveNthNodeFromEndList_19 {
4+
public class ListNode {
5+
int val;
6+
ListNode next;
7+
ListNode() {}
8+
ListNode(int val) { this.val = val; }
9+
ListNode(int val, ListNode next) { this.val = val; this.next = next; }
10+
}
11+
12+
public static void main(String[] args) {
13+
14+
}
15+
16+
//USE FLOYED CYCLE ALGORITHM
17+
public ListNode removeNthFromEnd(ListNode head, int n) {
18+
ListNode start = new ListNode(0);
19+
ListNode slow = start, fast = start;
20+
slow.next = head;
21+
22+
//Move fast in front so that the gap between slow and fast becomes n
23+
for(int i=1; i<=n+1; i++) {
24+
fast = fast.next;
25+
}
26+
//Move fast to the end, maintaining the gap
27+
while(fast != null) {
28+
slow = slow.next;
29+
fast = fast.next;
30+
}
31+
//Skip the desired node
32+
slow.next = slow.next.next;
33+
return start.next;
34+
}
35+
}

0 commit comments

Comments
 (0)