算法学习笔记------1.位运算

我的思路:

需要用上辅助存储空间,不符合题目要求。

标准思路:

利用“^”异或来消除相同的数字,因为要求此数,可以再不重复的“^”一遍1-1000,使该数变为3个。


AC代码:


我的思路:

连续“异或”。成对的会被消掉。

我的思路:

现将该数转换为二进制,再转为字符串,用charAt()和for循环来数出‘1’的个数。

移位思路:

原数不动,左移1。


1不动,右移原数。


第三种思路:

逐个消除1。

x&(x-1)消除二进制最后一个1.等于0为终止条件。



我的思路:

先转换为二进制,在判断‘1’出现次数,若只出现1次则为2的整数次方。



我的思路:

先转换为二进制的字符串,再变为字符数组,i和i+1相互交换,再转化为十进制。

位进制解题思路:


利用“与运算”“&”,和0相与就是不保留变为0,和1相与就是保留原数,上式为保留偶数位数字,再做一次类似的另把奇数位数字保留,得到两个新二进制数c和d。


c左移一位,d右移一位,然后c d做异或运算“^”即可得到要求数字。

成功代码:


注释:

第10和9行分别是与0101...0101共32位还有1010..1010共32位做与运算,上述代码为将其转化为16进制数字,减少其长度。



注释:

StringBuilder 可以直接拼接字符串。


我的思路:

利用辅助数组计算次数,再依次查找。

特殊思路:

n个相同的n进制数做不进位加法结果为0。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容