数据结构与算法位运算经典题

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;
    }
}

以上是关于数据结构与算法位运算经典题的主要内容,如果未能解决你的问题,请参考以下文章

数据结构与算法-位运算

经典算法_位运算

12道java经典入门算法题!

位运算经典算法

经典算法-位运算

leetcode算法题1: 两个二进制数有多少位不相同?异或位移与运算的主场