zoukankan      html  css  js  c++  java
  • LeetCode 41. 圆圈中最后剩下的数字 约瑟夫环问题

    题目描述

    0,1,,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。

    例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。

     

    示例 1:

    输入: n = 5, m = 3
    输出: 3
    示例 2:

    输入: n = 10, m = 17
    输出: 2
     

    限制:

    1 <= n <= 10^5
    1 <= m <= 10^6

    解题思路

    用一个arrayList来装所有的数,每次删除的数就remove,最后返回list.get(0)即可

    代码如下

    package leetcode;
    
    import java.util.ArrayList;
    
    public class LastRemaining {
         public int lastRemaining(int n, int m) {
            ArrayList<Integer> list=new ArrayList<Integer>();
            for (int i = 0; i < n; i++) {
                list.add(i);
            }
            int idx=0;
            while (n>1) {
                idx=(idx+m-1)%n;
                list.remove(idx);
                n--;
            }
            return list.get(0);
     
            }
         public static void main(String[] args) {
            LastRemaining ls=new LastRemaining();
            System.out.println(ls.lastRemaining(5, 3));
        }
    }
  • 相关阅读:
    oracle 将表名和字段名变为大写
    第三方应用软件提权
    数据库提权
    mybatis spring代理开发
    mybatis整合spring原始dao开发
    mybatis和spring整合的jar包准备
    mybatis整合ehcache(分布式缓存框架)
    mybatis 查询缓存
    mybatis 延迟加载
    mybatis 高级映射
  • 原文地址:https://www.cnblogs.com/Transkai/p/12600838.html
Copyright © 2011-2022 走看看