码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2020-06-05 21:15:21      阅读:64      评论:0      收藏:0      [点我收藏+]

标签:return   部分   实现   tps   线性   数据结构   int   数组   single   

位运算原理

基本位运算

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

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

标签:return   部分   实现   tps   线性   数据结构   int   数组   single   

原文地址:https://www.cnblogs.com/buptleida/p/13051633.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!