LintCode领扣 题解:约瑟夫问题

简介: LintCode领扣 题解:约瑟夫问题

n个人按顺序围成一圈(编号为1~n),从第1个人从1开始报数,报到k的人出列,相邻的下个人重新从1开始报数,报到k的人出列,重复这个过程,直到队伍中只有1个人为止,这就是约瑟夫问题。现在给定n和k,你需要返回最后剩下的那个人的编号。

1<=n<=1000, 1<=k<=100
在线评测地址:[LintCode 领扣]:https://www.lintcode.com/problem/joseph-problem/?utm_source=sc-tc-sz)

样例1

输入: n = 5, k = 3
输出: 4
解释:
求解过程:
原队列 :1 2 3 4 5
第一轮: 1 2 4 5 其中 3 出列
第二轮: 2 4 5 其中 1 出列
第三轮: 2 4 其中 5 出列
第四轮: 4 其中 2 出列
样例2

输入: n = 5, m = 1
输出: 5
解释:
第一轮: 2 3 4 5, 其中 1 出列
第二轮: 3 4 5, 其中 2 出列
第三轮: 4 5, 其中 3 出列
第四轮: 5, 其中 4 出列
【题解】

暴力解决。建立一个链表,并在每次迭代中删除一个节点。O(n)时间复杂度。

public class Solution {

/**
 * @param n: an integer
 * @param k: an integer
 * @return: the last person's number
 */
public int josephProblem(int n, int k) {
    List<Integer> list = new LinkedList<>();
    for (int i = 1; i <= n; i++) {
        list.add(i);
    }
    
    int i = 0;
    while (list.size() != 1) {
        i = (i + k - 1) % list.size();
        list.remove(i);    
    }
    return list.get(0);
}

}
更多题解参见九章算法:https://www.jiuzhang.com/solution/joseph-problem/?utm_source=sc-tc-sz

相关文章
|
JSON 小程序 数据格式
微信小程序的tabbar怎么配置
微信小程序的tabbar怎么配置
1099 2
|
存储 缓存
什么是本地存储的有效期?
什么是本地存储的有效期?
273 0
|
存储 缓存 Java
面试官:你知道包装类的缓存机制吗?
面试官:你知道包装类的缓存机制吗?
1861 0
|
数据可视化 计算机视觉
使用MMDetection进行目标检测
本文介绍了如何使用MMDetection进行目标检测。首先需按官方文档安装MMDetection,不熟悉的同学可参考提供的教程链接。安装完成后,只需准备模型配置文件、模型文件及待检测的图片或视频。示例代码展示了如何加载模型并进行图像检测,最后通过可视化展示检测结果,包括类别和置信度。
509 1
使用MMDetection进行目标检测
|
Kubernetes Shell Windows
【Azure K8S | AKS】在AKS的节点中抓取目标POD的网络包方法分享
在AKS中遇到复杂网络问题时,可通过以下步骤进入特定POD抓取网络包进行分析:1. 使用`kubectl get pods`确认Pod所在Node;2. 通过`kubectl node-shell`登录Node;3. 使用`crictl ps`找到Pod的Container ID;4. 获取PID并使用`nsenter`进入Pod的网络空间;5. 在`/var/tmp`目录下使用`tcpdump`抓包。完成后按Ctrl+C停止抓包。
471 12
|
7月前
|
SQL 算法 Java
适合自学的史上最强 Java 学习路线图分享
本路线图系统讲解Java从入门到进阶的学习路径,涵盖基础语法、面向对象编程、数据结构与算法、多线程、JVM原理、主流框架如Spring、数据库操作及项目实战,助你全面掌握Java开发技能,适合零基础及进阶学习。
1218 0
|
SQL 算法 安全
『软件工程5』详解软件项目管理之软件的度量
该文章深入讲解了软件项目管理中软件度量的重要性,包括如何进行有效的度量、度量的目的以及如何利用度量结果来改进软件质量和开发过程。
『软件工程5』详解软件项目管理之软件的度量
|
敏捷开发 测试技术 持续交付
阿里云云效产品使用问题之如何查看每个研发现在手上所有任务的甘特图(跨项目)
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
Web App开发 前端开发 开发工具
VisBug,提升web开发者幸福感的开发工具
作为web网页开发者,我们在日常开发过程中经常需要在控制台查看和修改元素的各种属性,以达到我们想要的各种效果。但这种方法往往效率低,而且效果不够直观。今天分享一款浏览器插件VisBug,可以帮助我们更快的查找元素,检查元素属性、间距,调整位置、颜色、字体大小、阴影等等,极大提升我们的开发体验。(支持Chrome、Firefox、Safari、Edge)
VisBug,提升web开发者幸福感的开发工具
|
SQL
Mybatis-Plus时间范围查询
Mybatis-Plus时间范围查询
1294 0

热门文章

最新文章