数据结构与算法位运算经典题
Posted buptleida
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构与算法位运算经典题相关的知识,希望对你有一定的参考价值。
位运算原理
基本位运算
x ^ 0s = x x & 0s = 0 x | 0s = x
x ^ 1s = ~x x & 1s = x x | 1s = 1s
x ^ x = 0 x & x = x x | x = x
感觉这得记住
去除两个相同的数
利用 x ^ x = 0
掩码操作
利用 x & 0s = 0 和x & 1s = x 可以实现掩码操作,例如 x & 0b0011100 仅保留x中与 1 重叠的部分
设值操作
利用 x | 1s = 1s 和 x | 0s = x 可实现设值操作,例如 x | 0b0011100 把x中与右边 1 相对应的部分设值为1
只出现一次的数字
LeetCode:只出现一次的数字
题目描述:
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
说明:
你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?
示例:
输入: [4,1,2,1,2]
输出: 4
思想:
利用 x ^ x = 0 去除两个相同的数
代码:
class Solution {
public int singleNumber(int[] nums) {
int m = 0;
for(int item : nums){
m ^= item;
}
return m;
}
}
以上是关于数据结构与算法位运算经典题的主要内容,如果未能解决你的问题,请参考以下文章