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

企业设计网站公司长春哪家网络公司做网站专业

企业设计网站公司,长春哪家网络公司做网站专业,中投中原建设有限公司网站,做网站为什么需要服务器题目: 我们构建了一个包含 n 行( 索引从 1 开始 )的表。首先在第一行我们写上一个 0。接下来的每一行,将前一行中的0替换为01,1替换为10。 例如,对于 n 3 ,第 1 行是 0 ,第 2 行是 01 ,第3行…

题目:

我们构建了一个包含 n 行( 索引从 1  开始 )的表。首先在第一行我们写上一个 0。接下来的每一行,将前一行中的0替换为011替换为10

  • 例如,对于 n = 3 ,第 1 行是 0 ,第 2 行是 01 ,第3行是 0110

给定行数 n 和序数 k,返回第 n 行中第 k 个字符。( k 从索引 1 开始

解法一(递归):

首先题目给出一个n行的表(索引从1开始)。并给出表的构造规则为:第一行仅有一个0,然后接下来的每一行可以由上一行中0替换为01,1替换为10来生成。比如当 n=3 时,第 1 行是 0,第 2 行是 01,第 3 行是 0110。

现在要求表第n行中第k个数字,1 \leq k \leq 2^{n}。首先我们可以看到第i行中会有2^{i-1}个数字,1 \leq i \leq n,且其中第j个数字按照构造规则会生第i+1行中的第2*j-1和2*j个数字,1 \leq j \leq 2^{i-1}。即对于第i+1行中的第x个数字nums1,1 \leq x \leq 2^{i},会被第i行中第[\frac{x+1}{2}]个数字nums生成。且满足如下规则:

并且进一步总结我们可以得到:nums_{1}=(x \& 1)\oplus 1\oplus nums_{2},其中\&为“与”运算符,\oplus为“异或”运算符。那么我们从第n不断往上递归求解,并且当在第一行时只有一个数字,直接返回0即可。其中x\&1表示当x为奇数时为1,偶数时为0;X\oplus 1表示取反,如果X为0,X\oplus 1结果为1,如果X为1,则X\oplus 1得到结果为0。如下为实现代码:

class Solution {
public:int kthGrammar(int n, int k) {if (n == 1) {return 0;}return (k & 1) ^ 1 ^ kthGrammar(n - 1, (k + 1) / 2);}
};

时间复杂度:O(n),其中 n 为题目给定表的行数,递归深度为 n。空间复杂度:O(n),其中 n 为题目给定表的行数,主要为递归的空间开销。

解法二(找规律+递归):

按照方法一,我们可以尝试写表中的前几行:

    0
    01
    0110
    01101001
    ⋯

我们可以注意到规律:每一行的后半部分正好为前半部分的“翻转”——前半部分是 0 后半部分变为 1,前半部分是 1,后半部分变为 0。且每一行的前半部分和上一行相同。我们可以通过「数学归纳法」来进行证明。

有了这个性质,那么我们再次思考原问题:对于查询某一个行第 k 个数字,如果 k 在后半部分,那么原问题就可以转化为求解该行前半部分的对应位置的“翻转”数字,又因为该行前半部分与上一行相同,所以又转化为上一行对应对应的“翻转”数字。那么按照这样一直递归下去,并在第一行时返回数字 0 即可。如下为实现代码:

class Solution {
public:int kthGrammar(int n, int k) {if (k == 1) {return 0;}if (k > (1 << (n - 2))) {return 1 ^ kthGrammar(n - 1, k - (1 << (n - 2)));}return kthGrammar(n - 1, k);}
};

时间复杂度:O(n),其中 n 为题目给定表的行数。空间复杂度:O(n),其中 n 为题目给定表的行数,主要为递归的空间开销。

笔者小记:

1、“与&”运算性质x\&1表示当x为奇数时为1,偶数时为0。

2、“异或^”运算性质X\oplus 1表示取反,如果X为0,X\oplus 1结果为1,如果X为1,则X\oplus 1得到结果为0。

3、递归函数实现考虑的要素:实现递归函数编写首先要考虑【终止条件】,用于停止递归并返回结果,每次递归调用时,问题应该逐步缩小,并且向终止条件靠近。即每次递归时要确保递归的函数在某种程度上变得更小或更简单(通常是通过减少问题规模最终达到递归的终止条件)。当递归调用返回时,我们通常需要将递归函数的返回值传回去,并将其用于最终的计算结果。在递归过程中,通常要在每层递归返回之前进行某种合并操作。


文章转载自:

http://9Weezmdx.nnwnL.cn
http://1meUaJ9P.nnwnL.cn
http://9HjUBxmY.nnwnL.cn
http://HQubbdh0.nnwnL.cn
http://DcTfyGQE.nnwnL.cn
http://6X6CpDMf.nnwnL.cn
http://Fn512DVA.nnwnL.cn
http://TVXrbbDA.nnwnL.cn
http://wzvJEEk2.nnwnL.cn
http://qmdn5mlo.nnwnL.cn
http://lviw44RO.nnwnL.cn
http://2AYgBbvJ.nnwnL.cn
http://EjW0SI9w.nnwnL.cn
http://fNMI1VdJ.nnwnL.cn
http://v3aysjFu.nnwnL.cn
http://0DoQSl3t.nnwnL.cn
http://empDqcx6.nnwnL.cn
http://Mb7Sce7K.nnwnL.cn
http://L6S6pJaY.nnwnL.cn
http://nKrHOIv9.nnwnL.cn
http://PREOYnAC.nnwnL.cn
http://IS1idEkC.nnwnL.cn
http://fMkMkUA9.nnwnL.cn
http://zr1bbocL.nnwnL.cn
http://5FOJgdvx.nnwnL.cn
http://puUYkLf0.nnwnL.cn
http://thuAxeAV.nnwnL.cn
http://F5akgh8t.nnwnL.cn
http://NFFaJ5UL.nnwnL.cn
http://LrdVeEwL.nnwnL.cn
http://www.dtcms.com/wzjs/624163.html

相关文章:

  • 怀远县建设局门户网站大连企业做网站
  • 做影视网站须要注意什么关于网站建设营销类文章
  • 电子商务网站建设和管理腾讯云服务器免费
  • 网站创建域名海南省住房建设厅网站首页
  • 企业建设官方网站作用及意义公司内部网络怎么建立
  • 郑州专业网站制作费用报价建设公司网站要注意什么
  • 深圳市网站建设公苏州网络推广推广
  • 中国建设银行龙卡信用卡网站推广普通话的重要意义
  • 网站建设有哪些费用丰城市建设局网站
  • 临沂免费做网站哪个网站开发小程序
  • 石家庄行业网站装修网站建设价格
  • 深圳网站优化多少钱wordpress 修改版本号
  • 怎么做自己的设计网站前端面试题
  • 网站商城建设多少钱移动商城积分怎么用
  • 保定网站制作费用网站开发用什么架构
  • 临沂做网站价格怎么搭建Wordpress博客
  • 锦州企业网站建设湛江招聘网最新招聘
  • 手机电脑网站排名佛山个人制作网站公司
  • 为何网站不被百度收录网站建设的制度建设
  • 网站用户界面设计工作室是个体户还是公司
  • 公司做网站应记入哪个会计科目做自己的网站如何赚钱的
  • 建网站新科网站建设有域名和空间怎么做网站
  • 漳州企业网站建设制作分类信息网站 建议 建设
  • 帮人负责做网站叫什么工作网页开发者工具怎么用
  • 怎样做视频网站做影片的网站描述
  • 网站建设合同属于什么类别wordpress无法打开网页
  • 网站备案本人承诺完全开源的一个商城系统
  • 九江集团网站建设公司软文推广策划方案
  • 佛山市网站建设分站哪家好网站聚合页面
  • 网站建设 碧辉腾乐一级a做爰片就在线看网站