zoukankan      html  css  js  c++  java
  • leetcode上的位运算

    136-只出现过一次的数字

    思路:可以考虑到数字以二进制形式存储,当两个不同的数字异或的时候会是true,所以把数组里的数字都一一处理一遍就可以了。

    class Solution {
    public:
        int singleNumber(vector<int>& nums) {
            int res=0;
            for(auto num:nums) res^=num;
            return res;
        }
    };

    201-数字范围按位与

    思路:m和n每次向右平移一位直到相等为止,记录下平移的次数i,然后让m往左平移i位即为所求

    class Solution {
    public:
        int rangeBitwiseAnd(int m, int n) {
            int i=0;
            while(m!=n){
                m>>=1;
                n>>=1;
                i++;
            }
            return (m<<i);
        }
    };

    477-汉明距离总和

    思路:规律查找发现,每一位上1的数量乘于0的数量就是当前位的结果,然后统计相加就可以得出结果了。

    class Solution {
    public:
        int totalHammingDistance(vector<int>& nums) {
            int res=0,n=nums.size();
            for(int i=0;i<32;i++){
                int cnt=0;
                for(int num:nums){
                    if(num&(1<<i)) cnt++;
                }
                res+=cnt*(n-cnt);
            }
            return res;
        }
    };

    421-最大异或值

    思路:

    868-二进制间距

    思路:

  • 相关阅读:
    css定位
    盒子模型
    操作边框的属性
    操作表格的属性
    常用css样式
    选择器
    编写css代码的方式
    javascript DOM 共同父节点
    最大子段和问题
    regexp 正则表达式
  • 原文地址:https://www.cnblogs.com/darklights/p/11607514.html
Copyright © 2011-2022 走看看