Leetcode-第160场周赛
1237. 找出给定方程的正整数解
思路:
签到题的全新版本。
直接暴力遍历就行了,明白这是个在写一个函数接口。
1 | /* |
1238. 循环码排列
解法:位运算
思路:采用位运算,其实这题就是格雷编码的改编,可以看第89题,明白格雷编码的实现,这题也就容易了。
以 2 3 1 0 4 5 7 6 为例 进行分析,转换成二进制得
0 1 0
0 1 1
0 0 1
0 0 0
1 0 0
1 0 1
1 1 1
1 1 0
分析发现,一开始对第1个进行镜像反射,改变最右边一位数,其他不变,便得到了第二位数
然后对1,2进行镜像反射,改变从右起第二位数,其他不变,便得到了3,4数
依次类推,便可得到题目要求的循环码排列
1 | class Solution { |
1239. 串联字符串的最大长度
解法:位压缩
思路:
1.先对字符串进行排序,从大到小,然后将每个字符串都压缩成一个整数进行保存,用32位整数的每一位代表一个字母,例如1表示a,10表示b,100表示c。(1,10,100是二进制表示)。且在保存过程中,若发现一个字符串中存在重复字符则对该字符串直接舍弃。且每次判断符合要求的单个字符串的最大长度保存res。
2.用s来存当前整数,与想要串联的字符串进行&运算若为0可串联,否则查找下一个字符串。找到最大的res。
1 | class Solution { |
1240. 铺瓷砖
此题参考小白二号,全靠二哥的讲解,才明白这题
解法1:打表
没啥好说的。面向测设用例编程=_=!
解法2:回溯
1 | class Solution { |