栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

《算法零基础100讲》(第46讲) 位运算 (异或) 入门

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

《算法零基础100讲》(第46讲) 位运算 (异或) 入门

临近期末了,解题还是会继续坚持的。 今天的题就一道有点难度,其他都挺好刷的! 位运算之异或记住:同为0,异位1; 详细请看https://blog.csdn.net/WhereIsHeroFrom/article/details/121739055https://blog.csdn.net/WhereIsHeroFrom/article/details/121739055 力扣练习题: 

136. 只出现一次的数字https://leetcode-cn.com/problems/single-number/https://leetcode-cn.com/problems/single-number/

解题思路:
全部数字异或一遍,相同的就变为0了,剩下的就是所要求解的数;
int singleNumber(int* nums, int numsSize){
    int num=0;
    for(int i=0;i 

190. 颠倒二进制位https://leetcode-cn.com/problems/reverse-bits/https://leetcode-cn.com/problems/reverse-bits/

解题思路:
先定义一个无符号整型变量,其他类型会出错;
每次都取最低位进行与操作然后进行存起来
uint32_t reverseBits(uint32_t n) {
    unsigned int num;
    for(int i=0;i<32&&n>0;i++)
    {
        num=num|((n&1)<<(31-i));
        n=n>>1;
    }
    return num;
}

461. 汉明距离https://leetcode-cn.com/problems/hamming-distance/https://leetcode-cn.com/problems/hamming-distance/

解题思路:
现将两个数进行异或运算,然后对每一位进行判断。
int hammingDistance(int x, int y){
    int num=x^y,sum=0;
    while(num)
    {
        sum=sum+(num&1);
        num=num>>1;
    }
    return sum;
}

1486. 数组异或操作https://leetcode-cn.com/problems/xor-operation-in-an-array/https://leetcode-cn.com/problems/xor-operation-in-an-array/

解题思路:
没啥好说的,看题干就可以解决
int xorOperation(int n, int start){
    int sum=0,num=start;
    while(num<=(start+2*(n-1)))
    {
        sum=sum^num;
        num=num+2;
    }
    return sum;
}

477. 汉明距离总和https://leetcode-cn.com/problems/total-hamming-distance/https://leetcode-cn.com/problems/total-hamming-distance/

解题思路:
只能说暴力解不了,看官方题解比较好理解
int totalHammingDistance(int* nums, int numsSize){
    int sum=0,num=0;
    for(int i=0;i<30;i++)
    {
        int num=0;
        for(int j=0;j>i)&1);
        }
        sum=sum+num*(numsSize-num);
    }
    return sum;
}

1720. 解码异或后的数组https://leetcode-cn.com/problems/decode-xored-array/https://leetcode-cn.com/problems/decode-xored-array/

解题思路:
看题目就能看懂,没啥好说的
int* decode(int* encoded, int encodedSize, int first, int* returnSize){
    int *array=(int *)malloc(sizeof(int)*(encodedSize+1));
    array[0]=first;
    for(int i=1;i 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/644983.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号