题解 | #二维数组中的查找#

环形链表的约瑟夫问题

http://www.nowcoder.com/practice/41c399fdb6004b31a6cbb047c641ed8a

直接暴力解法,用List模拟整个过程
import java.util.*;


public class Solution {
    /**
     * 
     * @param n int整型 
     * @param m int整型 
     * @return int整型
     */
    public int ysf (int n, int m) {
        // write code here
        List<Integer> list = new LinkedList<>();
        for(int i = 1; i <= n; i++) {
            list.add(i);
        }
        int index = -1; // 如果为0的话,count为1时index也为1,而1在链表中代表第二个数
        while(list.size() > 1) {
            int count = 0; // 用作计数
            while(count < m) {
                count++;
                index++;
                if(index == list.size()) { // 如果index到了最后一个,就把index重置为第一个
                    index = 0;
                }
            }
            list.remove(index);
            index--; // 比如1,2,3,4,5   3这种情况,第一轮后为1,2,4,5,此时list.get(index)==4,而4应该是下一轮的第一个,所以将index-1
        }
        return list.get(0);
    }
}


全部评论

相关推荐

01-26 22:20
已编辑
门头沟学院 Java
Java抽象带篮子:项目很nb了,现在好好准备八股和算法吧,早点找实习,可以看看我的置顶帖子。帖子里写了怎么改简历,怎么包装实习经历,还有2个高质量可速成的项目话术,和我的牛客八股笔记专栏
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务