您的位置:首页 > 编程语言

美团点评2016研发题目-[编程题-美团] 奇数位丢弃

2017-07-24 20:49 302 查看
[编程题] 奇数位丢弃

时间限制:1秒

空间限制:32768K

对于一个由0..n的所有数按升序组成的序列,我们要进行一些筛选,每次我们取当前所有数字中从小到大的第奇数位个的数,并将其丢弃。重复这一过程直到最后剩下一个数。请求出最后剩下的数字。
[b]输入描述:[/b]
每组数据一行一个数字,为题目中的n(n小于等于1000)。

[b]输出描述:[/b]
一行输出最后剩下的数字。

[b]输入例子1:[/b]
500

[b]输出例子1:[/b]
255

约瑟夫环问题:

import java.util.*;

public class Main{
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
while (input.hasNext()) {
int n = input.nextInt();
int result = getRes(n);
System.out.println(result);
}
}

// 约瑟夫环问题
private static int getRes(int n) {
List<Integer> list = new LinkedList<Integer>();
for (int i = 0; i <= n; i++)
list.add(i);
while (list.size() != 1) {
// 从0开始list移除一次,i再加一次,i始终指向奇数位
for (int i = 0; i < list.size(); i = i + 1)
list.remove(i);
}
return list.get(0);
}
}

参考:
孩子们的游戏(圆圈中最后剩下的数)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息