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

门户网站建设总结长沙seo代理商

门户网站建设总结,长沙seo代理商,广告设计图片素材免费,服务器的做网站空间摘要 剑指 Offer 62. 圆圈中最后剩下的数字 一、约瑟夫环解析 题目中的要求可以表述为:给定一个长度为 n 的序列,每次向后数 m 个元素并删除,那么最终留下的是第几个元素?这个问题很难快速给出答案。但是同时也要看到&#xff…

摘要

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

一、约瑟夫环解析

题目中的要求可以表述为:给定一个长度为 n 的序列,每次向后数 m 个元素并删除,那么最终留下的是第几个元素?这个问题很难快速给出答案。但是同时也要看到,这个问题似乎有拆分为较小子问题的潜质:如果我们知道对于一个长度n - 1 的序列,留下的是第几个元素,那么我们就可以由此计算出长度为 n 的序列的答案。

我们将上述问题建模为函数 f(n, m),该函数的返回值为最终留下的元素的序号。

首先,长度为n的序列会先删除第m% n 个元素,然后剩下一个长度为n - 1的序列。那么,我们可以递归地求解 f(n - 1, m),就可以知道对于剩下的 n - 1 个元素,最终会留下第几个元素,我们设答案为 x = f(n - 1, m)。

由于我们删除了第 m % n 个元素,将序列的长度变为 n - 1。当我们知道了 f(n - 1, m) 对应的答案 x 之后,我们也就可以知道,长度为 n 的序列最后一个删除的元素,应当是从 m % n 开始数的第 x 个元素。因此有 f(n, m) = (m % n + x) % n = (m + x) % n。

我们递归计算 f(n, m), f(n - 1, m), f(n - 2, m), ... 直到递归的终点 f(1, m)。当序列长度为 1 时,一定会留下唯一的那个元素,它的编号为 0。

class Solution {public int lastRemaining(int n, int m) {return f(n, m);}public int f(int n, int m) {if (n == 1) {return 0;}int x = f(n - 1, m);return (m + x) % n;}
}

复杂度分析

  • 时间复杂度:O(n),需要求解的函数值有n个。
  • 空间复杂度:O(n),函数的递归深度为n,需要使用 O(n)的栈空间。

二、数学 + 迭代

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

复杂度分析

  • 时间复杂度:O(n),需要求解的函数值有n个。

  • 空间复杂度:O(1),只使用常数个变量。

博文参考

《leetcode》

http://www.ritt.cn/news/21121.html

相关文章:

  • 网站正能量晚上在线观看长沙网站制作策划
  • 网站建设的基础是什么意思2023国内外重大新闻事件10条
  • 南通网站设计佛山网站建设方案服务
  • wordpress仿站维护免费建站网站一级
  • 国内外免费开源cms赣州seo外包
  • 浙江网站建设dyfwzx优化大师怎么下载
  • 做网站是靠什么挣钱电商网络销售是做什么
  • t型网站域名和版面郑州客串seo
  • 自己网站怎么做优化网络营销怎么做?
  • 通州区网站制作常见的营销策略有哪些
  • 出名的网站建设软件百度知道登录入口
  • 传奇手游网站大全9377抖音seo搜索引擎优化
  • 西安学校网站建设哪家专业杭州专业seo公司
  • c 做商务网站方便吗媒体邀约
  • 程序天下:lamp网站开发黄金组合 pdf网络推广服务合同
  • 网站的营销方案seo黑帽多久入门
  • 桂林漓江学院网站seo百度百科
  • o2o网站平台怎么做广州seo优化公司
  • 建设政务网站报告网络服务提供者知道或者应当知道
  • 广州 互联网公司 网站首页合肥seo管理
  • 建立个人网站怎么赚钱北京网络营销
  • 珠海网站系统建设网站模板源码
  • 携程做旅游的网站营销网点机构号
  • 做公务员试题比较好的网站b2b
  • 怎么查询一个网站从哪做的今日新闻简讯30条
  • 网站开发者选项如何建网站赚钱
  • 如何给一个企业的网站做推广宜昌今日头条新闻
  • 哪个网站做ppt临沂seo优化
  • asp.netmvc 做网站快速排名怎么做
  • 网站内容全屏截屏怎么做怎么找需要做推广的公司