构造环形链表或者直接List解决
约瑟夫问题I
http://www.nowcoder.com/questionTerminal/11b018d042444d4d9ca4914c7b84a968
链表
public class Joseph {
static class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
public static int getResult(int n, int m) {
ListNode head = new ListNode(1);
ListNode p = head;
for (int i = 1; i < n; i++) {
p.next = new ListNode(i + 1);
p = p.next;
}
p.next = head;
while(head.next!=head){
for (int i = 0; i < m - 2; i++) {
head = head.next;
}
head.next = head.next.next;
head = head.next;
}
return head.val;
}
}List
import java.util.*;
public class Joseph {
public int getResult(int n, int m) {
// write code here
ArrayList<Integer> list = new ArrayList<>();
for(int i = 0; i<n;i++){
list.add(i + 1);
}
int flag = 0;
while(list.size()!=1){
for (int i = 0; i < m-1; i++) {
if(flag == list.size() - 1) {
flag = 0;
}else {
flag++;
}
}
list.remove(flag);
if(flag == list.size()) flag = 0;
}
return list.get(0);
}
}