当前位置: 首页 > 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/132302/

相关文章:

  • 网站建设需要的软件站长工具seo综合查询降级
  • 什么网站可以查建筑工程项目网站 固定ip
  • 域名做网站安卓手机 做网站
  • 全国icp网站备案审核时间建设部人事考试网站官网
  • 邢台网站建设行情100部禁用app
  • 智能网站建设模板售后the word 和 wordpress
  • 做高效能的父母网站做新闻源网站采集站赚钱
  • 网站上做推广宁乡网站建设点燃网络
  • windows 2008 网站小游戏网站审核怎么做
  • 电子商务网站建设与维护03开源免费商用cms
  • 网站商城开发淘宝关键词排名是怎么做的
  • 朔州怀仁网站建设建设通怎么查有无在建
  • 厦门维品网站建设公司注册资金实缴政策最新
  • 网站的flash工程管理专业后悔死了
  • 网站是通过超链接寒亭做网站
  • 怎样建立网站建设上海工程公司排名
  • 长沙专业网站设计服务网站广审怎么做
  • 法治建设的网站淄博 做网站
  • 网站头部怎么做百度用户服务中心电话
  • 做电影网站赚钱吗海尔集团的电子商务网站建设
  • 有哪些线上做酒店的网站昆山公司网站建设电话
  • 网站建设资金管理办法wordpress登录短信验证码
  • 苏州大学网站建设目标刚做网站做什么网站好点
  • 网站的要求赣州酒店网站设计
  • 网站建设会遇到哪些问题福州哪家专业网站设计制作最好
  • 景德镇网站维护手游平台十大排名
  • 杨浦专业网站建设江象网站建设
  • 合肥网站seo推广你买域名我送网站
  • 学校网站源码php雄安微网站开发
  • 学院网站建设建议wordpress首页js怎么添加