约瑟夫问题---(蓝桥杯)

约瑟夫问题,自己模拟写的直接超时了,后面才知道约瑟夫问题是有规律的。

题目链接:约瑟夫问题

java 复制代码
import java.util.*;

public class Main {
    public static void main(String[] args) {
       Scanner scanner=new Scanner(System.in);
       int n=scanner.nextInt();
       int k=scanner.nextInt();
       System.out.println(find(n,k));
    }
    public static int find(int n,int k){
        int r=0;
        for(int i=2;i<=n;i++){
            r=(r+k)%i;
        }
        return r+1;
    }
}

自己写的超时!

java 复制代码
import java.util.*;

public class Main {
    public static void main(String[] args) {
       Scanner scanner=new Scanner(System.in);
       int n=scanner.nextInt();
       int k=scanner.nextInt();
       int now=0;//当前指针
        ArrayList<Integer> a=new ArrayList<>();
        for(int i=1;i<=n;i++){
            a.add(i);
        }
        int i=0;//当前位置
        while(a.size()!=1){
            now++;
            if(now==k){
                Integer x=a.remove(i);//索引处
                now=0;
            }
            else{
                i++;
                if(i==a.size()){
                    i=0;
                }
            }
        }
        System.out.println(a.get(0));
    }
}
相关推荐
云飞云共享云桌面18 分钟前
东莞精密机械制造工厂如何10个SolidWorks共用一台服务器资源
java·运维·服务器·网络·数据库·电脑·制造
毕设源码-赖学姐24 分钟前
【开题答辩全过程】以 网络药店管理系统为例,包含答辩的问题和答案
java·eclipse
努力也学不会java25 分钟前
【Java并发】揭秘Lock体系 -- 深入理解ReentrantReadWriteLock
java·开发语言·python·机器学习
埃泽漫笔37 分钟前
消息队列延迟与过期问题的实战解决
java·mq
花花无缺1 小时前
资源泄露问题
java·后端·http
爱敲代码的TOM1 小时前
深入剖析Java通信架构下的三种IO模式2
java·开发语言·架构
杨DaB1 小时前
【JavaSE】JVM
java·jvm
lang201509281 小时前
掌握MyBatis Java API:高效操作数据库
java·数据库·mybatis
晨晖22 小时前
将聚合工程的ssm项目部署到本地tomcat
java·tomcat
Z_z在努力2 小时前
【杂类】理解 @Repository 和 Mapper 的关系
java·tomcat·mybatis