约瑟夫环(排成圈)

/** * 约瑟夫环问题主要是考虑下标问题,只要解决了下标控制问题,这个题目就不难了 * 在这里我是分成了3中情况: * 1,下标小于剩余人数时:删除当前元素,并将下标后移 * 2.下标大于剩余人数时:用下标对剩余人数取于,删除元素,并下移下标 * 3.下标等于剩余人数或者是剩余人数的倍数的时候:移除最后一个元素,并让下标后移 */

 1 import java.util.LinkedList;
 2 import java.util.Scanner;
 3 
 4 public class StudentCode {
 5 
 6     public static void main(String[] args) {
 7         LinkedList<Integer> al=new LinkedList<Integer>();
 8         Scanner sc=new Scanner(System.in);
 9         int m=sc.nextInt();
10         int n=sc.nextInt();
11         //初始化队列,给每个元素赋值
12         for(int i=0;i<m;i++){
13             al.add(i+1);
14         }
15         int index=n;
16         int t=0;
17         while(al.size()!=1){
18             //第一种情况
19             if(index<al.size()){
20                 //下标和逻辑值相差1(逻辑下标从1开始,实际下标从0开始)
21                 al.remove(index-1);
22                 //逻辑下标后移
23                 index=index+n-1;
24             }else if((index)%al.size()!=0){
25                 //第二种情况
26                 t=(index)%al.size();
27                 index=t+n-1;
28                 al.remove(t-1);
29             }else if((index)%al.size()==0||index%al.size()==0){
30                 //第三种情况
31                 al.removeLast();
32                 index=1+n-1;
33             }
34         }
35         //输出元素
36         System.out.println(al.get(0));
37     }
38 }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏CRPER折腾记

JS数组去重!!!一篇不怎么靠谱的"深度"水文

数组去重,这是一个老梗了...今天我又拿出来说了... 我们在考虑全面一点的情况下,数组去重的实现,比如针对NaN,undefined,{}; 这其中涉及的知识...

1044
来自专栏一“技”之长

Swift讲解专题五——集合类型 原

        Swift中提供了3种集合类型,Array数据类型,Set集合类型,Dictionary字典类型。Array用于存放一组有序的数据,数据角标从0...

823
来自专栏向治洪

java 之容器

在Java中,我们想要保存对象可以使用很多种手段。我们之前了解过的数组就是其中之一。但是数组具有固定的尺寸,而通常来说,程序总是在运行时根据条件来创建对象,我们...

2458
来自专栏用户2442861的专栏

Java中如何遍历Map对象的4种方法

既然java中的所有map都实现了Map接口,以下方法适用于任何map实现(HashMap, TreeMap, LinkedHashMap, Hashtabl...

1061
来自专栏Kevin-ZhangCG

[ Java面试题 ] 集合篇

2037
来自专栏Android开发指南

12:集合map、工具类

3668
来自专栏Linyb极客之路

JAVA常用API整理

提供sin, cos, tan, exp, log, log10 等类方法,PI和E等类字段

3624
来自专栏Java帮帮-微信公众号-技术文章全总结

16(02)总结泛型

2:泛型(掌握) (1)泛型概述 是一种把明确类型的工作推迟到创建对象或者调用方法的时候才去明确的特殊的类型。 (2)格式: <数据类型> 注意:该数...

3407
来自专栏云霄雨霁

查找----基于有序数组

1680
来自专栏LanceToBigData

Java常用类(四)之数组工具类Arrays

前言   数组的工具类java.util.Arrays   由于数组对象本身并没有什么方法可以供我们调用,但API中提供了一个工具类Arrays供我们使用,从而...

2707

扫码关注云+社区

领取腾讯云代金券