首页 > 其他分享 >..

..

时间:2023-12-13 20:45:21浏览次数:21  
标签:Node pre 结点 .. count next item

 

  

package com;

public class JosephTest {

    public static void main(String[] args) {
        //解决约瑟夫问题

        //1.构建循环链表   包含41个结点

        Node<Integer> first = null; //记录首节点
        Node<Integer> pre = null; //记录上一个结点

        for(int i = 1; i <= 41; i++){

            //如果是第一个结点
            if(i == 1){
                first = new Node<>(i,null);
                pre = first;
                continue;  //跳过此次循环 进入i=2
            }

            //如果不是第一个结点
            Node<Integer> newNode = new Node<>(i, null);
            pre.next = newNode;  // 1.next = 2  将链表串起来
            pre = newNode; //pre后移   pre = 2

            //如果是最后一个结点,那么让最后一个结点的下一个结点为 first , 变为循环链表了
            if(i == 41){
                pre.next = first;  //最后一个结点和第一个结点串起来,成为循环链表
            }

        }

        //2.需要count计数器  模拟报数
        int count = 0;

        //3.遍历循环链表
        Node<Integer> n = first; //拿到第一个结点

        Node<Integer> before = null; // 当前结点的上一个结点

        //如果删除就剩最后一个元素时,会形成自环
        while(n != n.next){
            //模拟报数
                count++;
            //判断当前报数是不是为3
            if(count == 3){
                //如果是3,则把当前结点删除调用,打印当前结点,重置count,让n后移
                before.next = n.next;  //before = 2, n = 3
                System.out.print(n.item+" ");
                count = 0;
                n = n.next;  //后移到 3 的下一个

            }else{
                //如果不是3 让before变为当前结点,让当前结点后移
                before = n;
                n = n.next; // 列 第一个 为1 不是3 则 n =2
            }
        }
        //打印最后一个元素
        System.out.print(n.item);

    }

    private static class Node<T>{
        T item;
        Node next;
        public Node(T item,Node next){
            this.item = item;
            this.next = next;
        }
    }

}

 

标签:Node,pre,结点,..,count,next,item
From: https://www.cnblogs.com/lgy198/p/17899878.html

相关文章

  • 使用富文本编辑器KindEditor上传图片,一直显示:上传中,请稍后... 的解决办法
    问题详细:在使用KindEditor上传图片时,后端已经接收到了,但前端仍在加载如下图: 解决办法:在配置文件中书写以下代码:X_FRAME_OPTIONS='ALLOWALL' 原因:由于Django配置文件中默认将X_FRAME_OPTIONS配置为了DENY——表示该页面不允许在frame中展示,即便是在相同域名......
  • 【报错解决】RuntimeError: An attempt has been made to start a new process...
    【报错解决】RuntimeError:Anattempthasbeenmadetostartanewprocess…今天来记录一个Pycharm当中的报错解决:RuntimeError:Anattempthasbeenmadetostartanewprocessbeforethecurrentprocesshasfinisheditsbootstrappingphase.......
  • WPF限制字符串的最长显示长度,超出后尾部显示...
    在WPF中,如果你想要限制一个字符串的显示长度,并在超出后用省略号(...)表示,你可以使用TextBlock控件和设置它的TextTrimming属性。这种方法可以自动截断文本并在末尾添加省略号。<TextBlockText="{BindingYourString}"TextTrimming="CharacterEllipsis"Max......
  • vite编译为什么会报错“__vite-browser-external:node:path、fs、url...”
    当你在使用Vite打包时,遇到类似于`__vite-browser-external`的错误消息,通常是因为在代码中尝试导入浏览器不支持的模块。`__vite-browser-external`是Vite内部的一个机制,用于替换浏览器环境中无法直接访问的Node.js核心模块。例如,浏览器不具备文件系统访问能力,因此Node.......
  • selenium运行时的ValueError: Timeout value connect was <object object at 0x000001
    fromseleniumimportwebdriverdriver=webdriver.Chrome()driver.get("https://www.baidu.com/")运行时出现ValueError:Timeoutvalueconnectwas<objectobjectat0x000001FE483C4170>错误大概率原因是:selenium和urllib3库的版本冲突导致修改版本为:selenium=3.1......
  • Sam Altman当选“TIME时代周刊”2023年度最佳CEO!还有梅西、Taylor Swift当选...
    TIME时代周刊昨日在官网公布了2023年最佳CEO——SamAltman当选!此外,TaylorSwift当选年度最佳人物,梅西当选年度最佳运动员。SamAltman的当选可谓是实至名归!没有谁能比火爆全球的ChatGPT背后,OpenAI的CEO更“成功”了。今年SamAltman成功实现两次爆火,第一次是ChatGPT的发布,如果说......
  • 题解 QOJ1173【Knowledge Is...】 / accoders::NOI 5681【interval】
    https://qoj.ac/contest/537/problem/1173problem给定\(n\leq10^6\)个区间,你需要求出能够最多选出多少对区间,使得两个区间不交(区间为闭区间)。要求一个区间最多属于一对选出的区间。solution这是一般图匹配问题的特殊情况,所以放弃dp,考虑贪心、网络流、匹配等。按照左端点......
  • 今天在地铁认识一个女程序员,在外包公司工作三年被裁,只赔偿 4000...
    来源:https://www.163.com/dy/article/G9K7V11T05373SPQ.html今天在地铁认识一个女(硕士),我邀请她来我公司面试,她要求15000一个月,听她说被外包公司骗了,合同都是套路,被裁员后只获得4000元的赔偿,就这个举动,我感觉她是一个职场小白,我看她学历这么高就给了一次机会她。她自我介绍说:学......
  • sqlalchemy 实现 mysql INSERT INTO...ON DUPLICATE KEY UPDATE语法
    1.前言myql的INSERTINTO...ONDUPLICATEKEYUPDATE语句,简单点来说,就是如果记录不存在,则插入,如果记录存在,则更新。那怎么判断记录存在否?——主键、唯一键。那不是可以使用replace语句吗?——原理上可以,但是sqlalchemyorm中的的实现,是使用merge语法,这个语法有一个限制,就是判......
  • 是不是太胖了 最佳情侣身高差 求1+2+...+n的和
    7-4是不是太胖了据说一个人的标准体重应该是其身高(单位:厘米)减去100、再乘以0.9所得到的公斤数。已知市斤的数值是公斤数值的两倍。现给定某人身高,请你计算其标准体重应该是多少?(顺便也悄悄给自己算一下吧……)输入格式:输入第一行给出一个正整数H(100 < H ≤ 300),为某人身......