java算法
import java.util.LinkedList;
public class Randomdemo {
public static int removenm(int n, int m) {
LinkedList ll = new LinkedList();
for (int i = 0; i < n; i++) {
ll.add(new integer(i + 1));
}
int removed = -1; //设为-1是指明当前位置放于list的头,因为list是从0开始的
while (ll.size() > 1) { //在此循环来去掉满足条件的元素,
removed = (removed + m) % ll.size(); //找到满足条件的元素,如第三个,则为3+(-1)=2,正好是list的第三个。
ll.remove(removed--);//去掉满足条件的元素后,removed的值返回上一个,相当于为刚开始的removed=-1的道理一样,remove了一次之后list.size()就会减一。
}
return ((integer) ll.get(0)).intValue();//都去掉之后就只留下一个了,intValue是为了得到他所在的原来位置,因为上是用了int的值来递增加入list列中的,所以该值就是原来位置的值。
}
public static void main(string[] args) {
system.out.println(removenm(10, 3));
}
}