暑期目标:刷100题
其中:
简单题记0.5题;
中等题记0.8题;
困难题记1.5题;
07.10
题目数量:简单题*2 , 进度 1/100
[231] 2的幂, 判断一个数是否为2的幂
我的解法:
使用位运算
把输入与1求“&”,并加在count中(即,若为1 ,则+1, 若为0,则不变)
把输入右移一位:>>,继续重复上一步,直至该数为0
-1特殊处理
若count<2(即对应二进制数的补码仅有一位是1), 则是2的幂,
否则不是
最快的大佬的解法:
直接对n与n-1求与(&),若为0则是2的幂
[202] 快乐数,对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到1。如果可以变为 1,那么这个数就是快乐数。
我的解法:
按照题目要求来求
停止条件有两个:
最终得到1 或 最终得到的数之前出现过
大佬的解法:
大差不差,但是分类讨论得更优
07.11
题目数量:中等题*2 , 进度 2.6/100
公司OJ的No.80 一系列字符串转为6位数字,具体方法是求各个字符的ASCII码,6个一轮,下一轮与前一轮对应位置相加,然后把这六个数字各位相加,得到6个个位数即可;
学到的一个操作,用于求多位数n
的各位数之和:
s = sum(map(int, str(n)))
基本就是按照题目要求的循环即可
在判断是否为各位数时用了一次递归
最终结果是最快的
[794] 有效的井字游戏,题目略复杂,就不详述了,大概是给定几条规则,给定一个list作为棋盘,判断该期盼是否符合规则。
我的解法很蠢,基本就是找规则,甚至还用了一个类似穷举的操作
大佬的解法巧妙些,对规则总结得很到位,所以写出来很简单
还是得多思考啊~