java算法

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));

}

}

首页