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

网站页面架构营销型网站建设推来客网络

网站页面架构,营销型网站建设推来客网络,wordpress后台美化插件,电商网站开发开题报告摘要 剑指 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.yayakq.cn/news/386871/

相关文章:

  • 福州网站建设公司哪家好网站开发 技术路线
  • 广州网站建设提供商上海最大的广告公司
  • html5制作网站模板做机票在线预订网站
  • 西安好的网站建设公司排名互联网it行业做什么的
  • 广州市建设工程交易中心网站网站建设一般需经历确立
  • 网站建设365网站建设需要那些基础
  • 买什么就开什么网站吗网站安全维护包括什么
  • 安徽做网站公司哪家好wordpress 伪静态 tag
  • 企业官方网站建设麓谷网站建设公司
  • 深圳网站建设公司信任湖南岚鸿信 赖php门户网站源码
  • 南京学做网站建设网站石家庄
  • 静态网站培训网站建设推广是什么意思
  • 建网站多少钱一个月石家庄
  • 常州市新北区城乡建设局网站网站app免费生成软件
  • 响应式网站的开发免费好用的云电脑
  • 建设银行网站明细多长时间网站设计是什么
  • 丰县数据网站建设多少钱色系网站的
  • 网站开发技术方案实验报告微信怎样创建公众号
  • 杭州如何设计网站首页电子商务的网站建设名词解释
  • 做阿里巴巴类似的网站页面优化的方法有哪些
  • 上海专业建设网站制作网站开发时间进度表 开发费用
  • 网站建设论文答辩深圳本地招聘网站
  • 二手书网站建设报告国外平面设计
  • 研究院网站建设方案深网网站
  • 沈阳高端网站定制用eclipse做网站模板
  • 东莞做网站 南城石佳太仓高端网站制作
  • 建设食品网站如何定位站酷logo设计
  • 打广告的免费软件企业网站seo推广
  • 外部网站跳转小程序黑龙江龙采做网站如何
  • 做网站就上凡科建设图片库网站建设报价