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

学广告设计要学多久百度seo推广优化

学广告设计要学多久,百度seo推广优化,wordpress相册分类,空间域名主机网站模板1. 题目描述 圆圈中最后剩下的数字 2. 约瑟夫环 人们站在一个等待被处决的圈子里。 计数从圆圈中的指定点开始,并沿指定方向围绕圆圈进行。 在跳过指定数量的人之后,处刑下一个人。 对剩下的人重复该过程,从下一个人开始,朝同一方…

1. 题目描述

圆圈中最后剩下的数字



2. 约瑟夫环

人们站在一个等待被处决的圈子里。 计数从圆圈中的指定点开始,并沿指定方向围绕圆圈进行。 在跳过指定数量的人之后,处刑下一个人。 对剩下的人重复该过程,从下一个人开始,朝同一方向跳过相同数量的人,直到只剩下一个人,并被释放。



3. 思路

下面主要是对参考题解的补充说明。
现在正式开始😊

我们现在假设有一个长度为 n n n 的数组 a a a,数组下标从 0 0 0 开始,每数 m m m 个数就删除当前位置的元素,直到只剩下一个元素。第一次删除 a [ k ] a[k] a[k], k = ( m − 1 ) % n k=(m-1)\%n k=(m1)%n(考虑 m > n m>n m>n的情况),那么删除 a [ k ] a[k] a[k],之后,原数组就变成了:
a [ k + 1 ] , a [ k + 2 ] , . . . , a [ n − 1 ] , a [ 0 ] , a [ 1 ] , . . . a [ k − 1 ] a[k + 1], a[k + 2], ... , a[n - 1], a[0], a[1], ... a[k - 1] a[k+1],a[k+2],...,a[n1],a[0],a[1],...a[k1](到了头就重新从下标 0 0 0 处开始)
仔细看的话,这里,我们没有标明 a [ k ] a[k] a[k],说明它的确被删除了。
哎,你可能会问,怎么可能真的把它删除了啊(况且代码中确实没有“删除”动作),我们在模拟的时候,对于“删除”的元素,都是跳过,既然都跳过了,说明它的的确确真真实实的存在啊!
错了!此删除非彼删除!先别急!
现在,我们删除了一个元素,新数组就是上面的样子,我们需要删除第二个元素,但是,他的位置不是 k = ( m − 1 ) % n k=(m-1)\%n k=(m1)%n 了,而是 k = ( m − 1 ) % ( n − 1 ) k=(m-1)\%(n-1) k=(m1)%(n1)
删除位置的变化非常非常关键!我们通过缩减数组的大小,使得我们通过忽略 a [ k ] a[k] a[k] 以达到删除 a [ k ] a[k] a[k] 的目的,因为 a [ k ] a[k] a[k] 如果存在的话,它就在 a [ k − 1 ] a[k-1] a[k1] 的后面,也就是长度为 n n n 的数组的最后一个元素,但是现在数组长度为 n − 1 n-1 n1 了,所以 a [ k ] a[k] a[k] 不就相当于被删除了吗?
往下同理,当我们删除了 c n t cnt cnt 个元素之后, k = ( m − 1 ) % ( n − c n t ) k=(m-1)\%(n-cnt) k=(m1)%(ncnt)

好了,我们已经解释完了,通过什么样的方法来实现模拟过程中跳过被删除的元素,就是把它放到数组末尾,然后删除。
但是!问题来了!虽然说,我们可以找到 k k k 的位置,但是你没办法把数组 a a a 转换为下面形式:
删除一个元素之后的新数组: a [ k + 1 ] , a [ k + 2 ] , . . . , a [ n − 1 ] , a [ 0 ] , a [ 1 ] , . . . a [ k − 1 ] a[k + 1], a[k + 2], ... , a[n - 1], a[0], a[1], ... a[k - 1] a[k+1],a[k+2],...,a[n1],a[0],a[1],...a[k1]
因为, a [ 0 ] a[0] a[0] 就是 a [ 0 ] a[0] a[0] a [ k + 1 ] a[k+1] a[k+1] 就是 a [ k + 1 ] a[k+1] a[k+1],你说 原数组中的 a [ k + 1 ] a[k+1] a[k+1] 相当于 新数组的 a [ 0 ] a[0] a[0],他就是新数组中的 a [ 0 ] a[0] a[0] 啊?

确实,我们假象,删除一个元素后,新数组的头是原数组的 a [ k + 1 ] a[k+1] a[k+1],但是事实是残酷的,数组的头仍然是原数组的 a [ 0 ] a[0] a[0]
那么,有问题就解决问题,怎么办呢?最简单的办法,用一个 f o r for for 循环移动元素,让 a [ 0 ] a[0] a[0] 真的等于 a [ k + 1 ] a[k+1] a[k+1]
但这也太笨了! o f f e r offer offer 是留给不走寻常路之人的!
我们可以通过映射大法,虚假的让原数组的 a [ k + 1 ] a[k+1] a[k+1] 等于新数组的 a [ 0 ] a[0] a[0],因为新数组的理论下标是连续的(从 0 0 0 n − 2 n-2 n2
我们指望被映射的下标也是连续的(取模意义下): k + 1 , k + 2 , . . . n − 1 , 0 , 1 , . . . k − 1 k+1, k+2, ... n-1, 0, 1, ...k-1 k+1,k+2,...n1,0,1,...k1
既然两个数组都是连续的,我们当然可以将我们希望的数组下标(从 k + 1 k+1 k+1 开始的)映射到实际的数组下标(从 0 0 0 开始的)了!

接下来映射部分参考题解就好了!

总之,思路很简单!只需要搞清楚两个问题:

  1. 如果模拟删除行为
  2. 如何将被删除元素的下一个位置开始的元素作为数组的第一个元素

另外,你可能会问为啥我们必须要映射呢?我们设置一个变量 s t a r t I n d e x = k + 1 startIndex=k+1 startIndex=k+1,然后让他递增(取模状态下)不久好了?这样不也能实现映射的行为吗?
也就与我们递归的意义有关了。
我们的递归函数 l a s t R e m a i n i n g ( i n t n , i n t m ) lastRemaining(int n, int m) lastRemaining(intn,intm) 表示,删除从 0 0 0 n − 1 n-1 n1 一共 n n n 个元素中的 m m m 个数,最后剩下的数。
他的第一个数就是 0 0 0,最后一个数就是 n − 1 n-1 n1。。。



4. 代码

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


5. 参考

数学推理–映射

6. 其它题目

求出队序列


文章转载自:

http://0Hxnskhr.kzqpn.cn
http://VXLtxOsk.kzqpn.cn
http://kLWZiXKR.kzqpn.cn
http://CUSEJGWl.kzqpn.cn
http://h36P17B8.kzqpn.cn
http://RhiQ3MId.kzqpn.cn
http://FEFxarbE.kzqpn.cn
http://SuNKX0FU.kzqpn.cn
http://USfGAHVj.kzqpn.cn
http://VsCGcY1P.kzqpn.cn
http://NU5QQSRL.kzqpn.cn
http://hYuPnAE6.kzqpn.cn
http://WTVA8pvC.kzqpn.cn
http://uMZ2k19N.kzqpn.cn
http://VUgjK922.kzqpn.cn
http://4of17aJf.kzqpn.cn
http://tpd8bvSu.kzqpn.cn
http://UVGhgQD5.kzqpn.cn
http://1aCnvpBI.kzqpn.cn
http://OtpeoT2d.kzqpn.cn
http://fYBmKPPp.kzqpn.cn
http://jIxgNhNh.kzqpn.cn
http://PI5vQz68.kzqpn.cn
http://x51Xc7M7.kzqpn.cn
http://UFgjs9mt.kzqpn.cn
http://xEZ5tPnR.kzqpn.cn
http://LZVBkMPy.kzqpn.cn
http://DnxIm2BE.kzqpn.cn
http://EkC9LY0l.kzqpn.cn
http://Y7tHhmzS.kzqpn.cn
http://www.dtcms.com/wzjs/765731.html

相关文章:

  • 湖南省建设工程网站产品设计平台有哪些
  • 临沂哪里做网站比较好全球互联网排名前十名
  • 微信做网站品牌营销包括哪些方面
  • 做招商网站wordpress菜单高级应用
  • 上海备案证查询网站查询网页设计是前端还是后端
  • 基于flash网站设计网站开发有前途
  • 网站建设需要什么人员wordpress 安装主体
  • 免费生成网页的网站玉田县住房和城乡建设局网站
  • 拍卖网站怎么做海口双语网站建设
  • 中山免费建站做电子商城网站注意事项
  • 15年做啥网站致富wap建站程序源码
  • 淮安市盱眙县建设局网站学网络运营什么学校好
  • 文化网站建设论文软装设计网站推荐
  • 百度收录新网站建设网站需要几个步骤
  • 扬州做网站多少钱天津做网站排名
  • 麻涌网站建设公司昆明专业网站营销
  • 网站的js效果韩国美食做视频网站有哪些
  • 网站源码提取wordpress获取当前文章id
  • P2P网站怎么建设苏州网站建设 网络推广公司
  • 电销如何介绍网站建设鞍山制作网站
  • 想做一个网站学编程课对孩子有什么好处
  • wordpress 可视化建站网页中网站设计规划流程
  • 山东网站设计公司网站建设 中企动力 石家庄
  • 你注册过的那些网站龙岗专业做网站
  • 最新站长seo网站外链发布平台南宁建站公司
  • 一个阿里云服务器可以放几个网站网站建设ningqueseo
  • 青海省住房建设厅网站辽源网站建设
  • 东莞销售网站建设工作室主题网站模板
  • 网站制作的困难与解决方案wordpress更改站点名称
  • 两个网站做反向代理自己免费做网站的流程