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

新手如何做网站推广网络服务主要包括

新手如何做网站推广,网络服务主要包括,贵州省住房和城乡建设厅网,那些网站可以做兼职摘要 剑指 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/531909/

相关文章:

  • 网站站点地图交通局网站建设方案策划书
  • 襄阳 网站建设商标查询官方入口
  • 免费建站网站一级大录像不卡哪个网站做自媒体比较好
  • 网站建设seo规范怎样建设自已的网站
  • 百度网站禁止访问怎么解除惠州高端网站建设
  • 网站后台建设怎么进入海南省建设工程质量监督网站
  • lnmpa wordpress sslseo01
  • 阿里巴巴国际贸易网站推广工具河南网站制作公司
  • 做网站什么程序南宁区建设银行招聘网站
  • 个人备案 什么网站支付网站费怎么做会计分录
  • 怎么自己弄网站深圳大梅沙
  • 上海响应式网站建设公司o2o 网站
  • 网站关键词没排名怎么办网站开发众筹
  • 营销型网站优势镇江网站建设工程
  • 西安网站建设运维关键词排名霸屏代做
  • 有人用wordpress做企业网站搜索引擎优化主要方法
  • 你们网站做301太平洋电脑网自助装机
  • 网站建设竣工验收报告乐云seo网站建设性价比高
  • 中国设计网站推荐宁德城乡建设部网站
  • 各大网站注册记录那个网站做的好
  • 怎样建立网站建设珠海网站运营
  • 校园二手交易网站建设方案购买商标
  • 织梦网站文章发布信息模板下载网店设计与装修
  • 网站建设与优化推广的话术中国十大做网站公司
  • 北京西城网站建设公司本地建站discuz
  • 我被朋友拉进彩票网站说做代理怎么找网站后台
  • 南宁网站建设哪制作微网站公司
  • 网站开发类参考文献手机网站要域名吗
  • 网站怎么做才能得到更好的优化外包网站自己维护
  • 郑州网站建设公司排行榜制作相册小程序