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

【leetcode】圆圈中最后剩下的数字

目录

1. 问题

2.  思路

3. 代码 

4. 运行


1. 问题

      本题即为典型的约瑟夫问题,通过递推公式倒推出问题的解。原始问题是从n个人中每隔m个数踢出一个人,原始问题变成从n-1个人中每隔m个数踢出一个人……

示例 1:

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

示例 2:

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

2.  思路

      第一行表示每个人的下标,现在要从11个人中删除报数为3的人,从图中可以可看出最后7是胜利者。分析其中的规律:

第一轮中,11个人中胜利者7的角标是6;

第二轮中,10个人中胜利者7的角标是3;

第三轮中,9个人中胜利者7的角标是0;

第四轮中,8个人中胜利者7的角标是6;

第五轮中,7个人中胜利者7的角标是3;

第六轮中,6个人中胜利者7的角标是0;

第七轮中,5个人中胜利者7的角标是3;

第八轮中,4个人中胜利者7的角标是0;

第九轮中,3个人中胜利者7的角标是1;

第十轮中,2个人中胜利者7的角标是1;

第十一轮中,1个人中胜利者7的角标是0;

 

从第十一轮中倒推到第一轮:

从第十一轮中推出第十轮的角标数,f(2,3) = (f(1,3) + m) % 2 =(0+3) % 2 = 1

从第十轮中推出第九轮的角标数,f(3,3) = (f(2,3) + m) % 3 =(1+3) % 3 = 1

从第九轮中推出第八轮的角标数,f(4,3) = (f(3,3) + m) % 4 =(1+3) % 4 = 0

懒得写了…….

 

结论:从n个人中每隔m删除一人,递推公式为 f(n,m) = (f(n-1,m)+m)  %  n

3. 代码 

#include <iostream>
using namespace std;class Solution {
public:// n表示多少个人,m表示随机数int LastRemaining_Solution(int n, int m){// 特殊输入if (n == 0 || m < 0) return -1;// 递推公式计算int res = 0;for (int i = 1; i <= n; i++){res = (res + m) % i;cout << res << endl;}return res;}
};
int main()
{int n = 11;int m = 3;Solution solution;solution.LastRemaining_Solution(n, m);return 0;
}

4. 运行

http://www.lryc.cn/news/309874.html

相关文章:

  • 利用python批量将.shp文件转换坐标生成.geojson文件,再将.geojson转换成.csv文件,最后将csv文件插入数据库表
  • 远程服务器Ubuntu 18.04安装VNC远程桌面
  • 30天自制操作系统(第23天)
  • 基于Rust语言,和WebAssembly技术,与JavaScript结合,的具体应用场景
  • 【MATLAB源码-第154期】基于matlab的OFDM系统多径信道下块状和梳妆两种导频插入方式误码率对比仿真。
  • Linux 下 socket 编程介绍及 TCP 客户端与服务端创建示例
  • JetBrains Gateway Github Copilot 客户端插件和主机插件
  • 【web APIs】3、(学习笔记)有案例!
  • 使用css reset 还是使用Normalize.css
  • 英语中的提问方式(问法)(bug提问、bug描述)
  • xss.haozi.me靶机练习
  • 2.1 mov、add和sub加减指令实操体验
  • 计算机设计大赛 深度学习机器视觉车道线识别与检测 -自动驾驶
  • 中间件安全(概述)有中间件的各类链接和官网信息和漏洞库以及配置问题和开源工具
  • Unity铰链四杆机构设计和运动仿真
  • Python爬虫——解析常用三大方式之Xpath
  • C#判断DataTable1 A列的集合是否为DataTable2 B列的集合的子集
  • VirtualBox 桥接网卡 未指定 “未能启动虚拟电脑Ubuntu,由于下述物理网卡未找到:”
  • 基于yolov5的电瓶车和自行车检测系统,可进行图像目标检测,也可进行视屏和摄像检测(pytorch框架)【python源码+UI界面+功能源码详解】
  • vscode如何远程到linux python venv虚拟环境开发?(python虚拟环境、vscode远程开发、vscode远程连接)
  • 蓝桥杯第十二届电子类单片机组程序设计
  • 基于springboot+vue的工作流程管理系统
  • 【LeetCode刷题】146. LRU 缓存
  • 奇酷网络用AI思维办公:不允许做PPT,只能用Word,只能一页纸
  • 【笔记】-编程语言以及应用领域
  • MWC 2024丨美格智能推出5G RedCap系列FWA解决方案,开启5G轻量化新天地
  • mTLS: openssl创建CA证书
  • Python 进阶语法:os
  • 测试需求平台9-Table 组件应用产品列表优化
  • targetSdkVersion > 30 如何将下载的网络视频 保存到手机相册里更新