题目
题目链接:here
这道题的思路应该不难,使用双向链表,假设我们输入10 3,一共10个人,我们把这10个人放进一个双向链表里面,遍历,设置count=1,一个一个匹配:刚开始是1号,1号的时候count!=3,所以把1号弹出,放到队尾部,count++,继续匹配,到count=3的时候,匹配到3号,3号弹出,放到2号数组中,一直持续这样的操作,直到双向链表中的所有元素都被弹出,最后遍历2号数组就可以得到答案了。

java代码如下:

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Scanner;/*** @author :Zeeland* @date :Created in 2021/3/17 18:14* @version: 1.0$*/public class P1996 {public static void main(String[] args) {Scanner s =new Scanner(System.in);while(s.hasNext()){int n =s.nextInt();int count =s.nextInt();LinkedList<Integer> list1 =new LinkedList<>();LinkedList<Integer> list2 =new LinkedList<>();ArrayList<Integer> arr =new ArrayList<>();//初始化for (int i = 1; i <= n; i++) {list1.add(i);}int num =1;while(list1.size()!=0){if(num != count){list1.addLast(list1.removeFirst());num++;}else{arr.add(list1.removeFirst());num++;num=1;}}//输出list2for(int i=0;i<arr.size()-1;i++){System.out.print(arr.get(i)+" ");}System.out.println(arr.get(arr.size()-1));}}
}

注意事项:集合类对象遍历的时候最好不要使用remove类的方法遍历

刚开始的时候我不是用ArrayList,而是用LinkedList遍历,代码如下:

for(int i =0;i<list2.size()-1;i++){System.out.print(list2.removeFirst()+" ");}System.out.println(list2.removeFirst());

输入10 3,一直只生成5个数字,rebug了好久才发现,我遍历的时候remove了element,导致size一直在变小,remove了5次,size也就从10变成了5,因此集合类遍历的时候已经要注意好用Peek或者get方法、foreach或迭代器来遍历!

双向链表:P1996约瑟夫问题的解决方法相关推荐

  1. python解决约瑟夫问题_Python实现约瑟夫环问题的方法

    本文实例讲述了Python实现约瑟夫环问题的方法.分享给大家供大家参考,具体如下: 题目:0,1,...,n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字.求出这个圆圈里剩下的 ...

  2. 信息学奥赛一本通 2037:【例5.4】约瑟夫问题 | 1334:【例2-3】围圈报数 | 洛谷 P1996 约瑟夫问题

    [题目链接] ybt 2037:[例5.4]约瑟夫问题 ybt 1334:[例2-3]围圈报数 洛谷 P1996 约瑟夫问题 [题目考点] 1. 循环遍历数组 假设数组下标为1~n,循环控制变量i从1 ...

  3. 豆瓣API 不能访问的解决方法

    豆瓣API 不能访问的解决方法 在参数中添加apikey:apikey=0b2bdeda43b5688921839c8ecb20399b 例如 访问 https://api.douban.com/v2 ...

  4. mysql 乱码 越南_MySQL_mysql数据库乱码之保存越南文乱码解决方法,我自己测试一下,很多字符变 - phpStudy...

    mysql数据库乱码之保存越南文乱码解决方法 我自己测试一下,很多字符变成了 '?'. 数据库连接已经是使用了 utf8 字符集: define("MYSQL_ENCODE", & ...

  5. 【每日一题】洛谷--P1996 约瑟夫问题 java题解

    文章目录 题目链接 题解 题目链接 洛谷–P1996约瑟夫问题 题解 约瑟夫问题细品一下,就是一个链表成环,根据规则要求逐渐remove的一个思路.代码详解如下: package com.compan ...

  6. kali安装vscode和无法启动解决方法

    一.安装 1)源安装 使用如下命令来增加源: curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > m ...

  7. mysql error number 1130,[转]mysql error number 1130的解决方法

    关键字: is not allowed to connect to this MySQL server 如果你想连接你的mysql的时候发生这个错误: ERROR 1130: Host '192.16 ...

  8. Tomcat内存溢出解决方法

    Java内存溢出详解 一.常见的Java内存溢出有以下三种: 1. java.lang.OutOfMemoryError: Java heap space ----JVM Heap(堆)溢出 JVM在 ...

  9. ubuntu 系统 apt-get install python3-pip 依赖报错解决方法

    1. 直接安装报依赖错误 直接使用 apt-get install python3-pip 安装 sudo apt-get install python3-pip 报以下依赖错误 ubuntu@ubu ...

最新文章

  1. 2022-2028年中国自热米饭市场竞争策略及行业投资潜力预测报告
  2. 非计算机专业如何转行AI,找到算法offer?
  3. HDU1162(Prim算法)
  4. dwarf tower
  5. c语言中的下标,c语言中数组的下标从什么入手下手?_后端开发
  6. 爱库存:已实名举报唯品会不正当竞争行为
  7. 局域网ssr转pptp_[网络技术][转]PPTP连接过程
  8. PSIM软件学习---07 元件参数动态扫描
  9. [摘录]第10章 培养胜过对手的力量
  10. HttpHandler和ashx使用Session 出现未初始化异常
  11. C++语音信号时域分析
  12. 手机内存文件夹html,手机内存越用越小?删除这6个英文文件夹,瞬间释放20G
  13. 几何分布(一种离散分布)
  14. html常用元素总结
  15. 论人类不平等起源读后感
  16. effective c++读书随记
  17. PTA题目 电话聊天狂人 散列表 map
  18. sessionStorage 、localStorage 和 cookie
  19. linux中常用的60个命令及作用详解
  20. mac 下netstat理解

热门文章

  1. MQTT树莓派小车局域网控制移动
  2. 微信开发工具BUG(漏洞),魔法加法
  3. 刷屏器!简单!快速!稳定!可控制速度!
  4. 10年小公司程序员收入多少?惊呆了
  5. AidLux“换脸”案例源码详解 (Python)
  6. 加州大学欧文分校计算机排名,加州大学欧文分校计算机工程硕士排名第30(2020年TFE Times排名)...
  7. 人工智能 --- Python求解线性和非线性规划问题
  8. 如何使用计算机网络打印机,电脑重新连接网络打印机的操作方法-电脑自学网...
  9. ROM、RAM、DRAM、SRAM、FLASH区别
  10. 项目1在线交流平台-7.构建安全高效的企业服务-2.使用Security自定义社区网页认证与授权