A Monk

93. 复原IP地址

问题93 复原IP地址 https://leetcode-cn.com/problems/restore-ip-addresses/ 这个题目一开始我用的是一种简单粗暴的笨办法,就是循环遍历,得到所有可能的分割结果,然后筛选出符合IP地址格式的结果。这种方法先不说时间效率,代码看起来就繁琐不美观。 其实这个题目算是比较典型的回溯法题目,用回溯法的解体模板去套的话,并不难写出来。回溯遍历,...

89. 格雷编码

问题89 格雷编码 ★★☆☆☆ https://leetcode-cn.com/problems/gray-code/ 这个题目本质上还是位操作,关键点是如果我们有了n-1位的格雷编码,如何得到n位的格雷编码呢?顺序遍历挨个高位补一位二进制位0,结果和n-1位的格雷编码一样。接着,倒序遍历挨个高位补一位二进制位1,并追加到n-1位格雷编码的末尾。可以推断,这样得到的结果是符合要求的格雷编码...

401. 二进制手表

问题401 二进制手表 https://leetcode-cn.com/problems/binary-watch/ 这个题目我一开始的思路是回溯法,把题目要求抽象为从一个包含N个元素的数组中,挑选M个数出来,要求它们的和满足一定限制,返回所有可能的挑选对应的和的集合。然后吭哧吭哧写了一堆代码,正确性没有问题,但是效率较差。 看了一眼官方题解才恍然大悟,其实题目描述已经很明显的是二进制位...

190. 颠倒二进制位

问题190 颠倒二进制位 ★☆☆☆☆ https://leetcode-cn.com/problems/reverse-bits/ 这个题目的解题思路很直接,通过右移循环取出最低位的二进制位,然后通过左移累积结果值即可。 那么题目额外提出的,如果涉及大量调用,如何优化效率呢?一开始我没什么思路,看了一下官方题解,这个所谓的“位运算分治”,看描述还好理解,但是代码看不懂…… 我又思考了下...

97. 交错字符串

问题97 交错字符串 ★★★☆☆ https://leetcode-cn.com/problems/interleaving-string/ 我觉得这个题目有点难度,光是题目要求就需要理解消化,将两个字符串分别划分为两个子串序列,子串个数相等或者相差为1,然后把两个子串序列交错的拼接成一个字符串,现在给定三个字符串,问是否存在某种划分方式,使得划分以后得到的两个子串序列交错以后可以组成第三...