当前位置: 首页 > news >正文

剑指Offer系列(java版,详细解析)62.圆圈中最后剩下的数字

题目描述

剑指 Offer 62. 圆圈中最后剩下的数字

难度简单349

0,1,···,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字(删除后从下一个数字开始计数)。求出这个圆圈里剩下的最后一个数字。

例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。

示例 1:

输入: n = 5, m = 3
输出: 3

示例 2:

输入: n = 10, m = 17
输出: 2

限制:

  • 1 <= n <= 10^5
  • 1 <= m <= 10^6

约瑟夫环问题

测试用例

  • 功能测试(输入的m小于n,比如从最初有5个数字的圆圈中每次删除第2、3个数字;输入的m大于或者等于n,比如从最初有6个数字的圆圈中每次删除第6、7个数字)
  • 特殊输入测试(圆圈中有0个数字)
  • 性能测试(从最初有400个数字的圆圈中每次删除第997个数字)

题目考点

  • 考察应聘者的抽象建模能力。
  • 考察应聘者对环形链表的理解及应用能力。
  • 考察应聘者的数学功底及逻辑思维能力。

解题思路

解题思路一:利用链表(可以模拟的)来循环遍历

解题思路二:利用数学推导出一个递归公式,见书本。这里就不展示了。

参考解题

class Solution {
    public int lastRemaining(int n, int m) {
        int x = 0;
        for (int i = 2; i <= n; i++) {
            x = (x + m) % i;
        }
        return x;
    }
}

相关文章:

  • 剑指Offer系列(java版,详细解析)63.股票的最大利润
  • 剑指Offer系列(java版,详细解析)64.求1+2+...+n
  • 剑指Offer系列(java版,详细解析)65.不用加减乘除做加法
  • 剑指Offer系列(java版,详细解析)66.构建乘积数组
  • 剑指Offer系列(java版,详细解析)67.把字符串转化成整数
  • 剑指Offer系列(java版,详细解析)68.树中两个节点的最低公共祖先
  • Go语言fmt.Sprintf(格式化输出)
  • Go 面试系列:Go interface中nil的比较问题
  • Go 面试系列: new 和 make有什么不同之处呢?
  • Go 面试系列: Goroutine 数量是越多越好吗?设置多少会影响GC调度呢?
  • 什么是读、写扩散?
  • 一文搞定权限设计模型(RBAC,ABAC)超详细图文解析
  • 一文搞定权限管理!授权、鉴权超详细解析
  • Go 中的 JSON如何序列化和反序列化?来看看go的包怎么实现!
  • Go中如何比较两个json?深度优先搜索解决,超详细代码!
  • 2018一半小结一波
  • echarts花样作死的坑
  • IDEA常用插件整理
  • Javascripit类型转换比较那点事儿,双等号(==)
  • java多线程
  • leetcode388. Longest Absolute File Path
  • mysql_config not found
  • node.js
  • pdf文件如何在线转换为jpg图片
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 聚类分析——Kmeans
  • 排序算法之--选择排序
  • 判断客户端类型,Android,iOS,PC
  • 前端性能优化——回流与重绘
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 一、python与pycharm的安装
  • 异常机制详解
  • nb
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • $(selector).each()和$.each()的区别
  • (09)Hive——CTE 公共表达式
  • (39)STM32——FLASH闪存
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (转)程序员疫苗:代码注入
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • .net framework 4.0中如何 输出 form 的name属性。
  • .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖
  • .NET 事件模型教程(二)
  • .NET6使用MiniExcel根据数据源横向导出头部标题及数据
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
  • .NET下的多线程编程—1-线程机制概述
  • .sdf和.msp文件读取
  • .sh文件怎么运行_创建优化的Go镜像文件以及踩过的坑
  • ::before和::after 常见的用法