当前位置: 首页 > news >正文

位运算算法题

  1. 缺失的数字

 public int missingNumber(int[] nums) {

        int ret = 0;

        for (int x : nums)

            ret ^= x;

        for (int i = 0; i <= nums.length; i++)

            ret ^= i;

        return ret;

    }

  1. 两整数之和

 public int getSum(int a, int b) {

        while (b != 0) {

            int x = a ^ b; // 先算出⽆进位相加的结果

            int carry = (a & b) << 1; // 计算进位

            a = x;

            b = carry;

        }

        return a;

    }

  1. 只出现一次的数字2

给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。

输入:nums = [2,2,3,2]

输出:3

 public int singleNumber(int[] nums) {

        int ret = 0;

        for (int i = 0; i < 32; i++) // 依次修改 ret 中的每⼀个⽐特位

        {

            int sum = 0;

            for (int x : nums) // 统计 nums 中所有的数的第 i 位的和

                if (((x >> i) & 1) == 1)

                    sum++;

            if (sum%3 == 1)

                ret |= 1 << i;

        }

        return ret;

    }

  1. 消失的两个数字

 public int[] missingTwo(int[] nums) {

        // 1. 先把所有的数异或在⼀起

        int tmp = 0;

        for (int x : nums)

            tmp ^= x;

        for (int i = 1; i <= nums.length + 2; i++)

            tmp ^= i;

        // 2. 找出 a,b 两个数⽐特位不同的那⼀位

        int diff = 0;

        for(;diff<32;diff++){

               if (((tmp >> diff) & 1) == 1){

                  break;

               }

        }

        // 3. 将所有的数按照 diff 位不同,分两类异或

        int[] ret = new int[2];

        for (int x : nums)

            if (((x >> diff) & 1) == 1)

                ret[1] ^= x;

            else

                ret[0] ^= x;

        for (int i = 1; i <= nums.length + 2; i++)

            if (((i >> diff) & 1) == 1)

                ret[1] ^= i;

            else

                ret[0] ^= i;

        return ret;

}

http://www.xdnf.cn/news/1099153.html

相关文章:

  • arm架构,arm内核,处理器之间的关系
  • STM32F103之ModBus\RS232\RS422\RS485
  • 记录今天学习Comfyui的感受
  • 【运维架构】云计算运维架构师与基础设施,技术路线,Linux证书(标准化/定制化/CNCF,公有云/混合云/私有云)
  • pharokka phold--快速噬菌体注释工具
  • 1.1.1数据类型与变量——AI教你学Django
  • 一文讲清楚React Hooks
  • Spring for Apache Pulsar->Reactive Support->Quick Tour
  • 【C++】——类和对象(上)
  • C语言<数据结构-链表>
  • Django专家成长路线知识点——AI教你学Django
  • 深度学习参数初始化方法详解及代码实现
  • WebSocket实战:实现实时聊天应用 - 双向通信技术详解
  • [数据结构与算法] 优先队列 | 最小堆 C++
  • C语言——预处理详解
  • Swift 图论实战:DFS 算法解锁 LeetCode 323 连通分量个数
  • 第一次搭建数据库
  • 【macos用镜像站体验】Claude Code入门使用教程和常用命令
  • B2、进度汇报(— 25/06/16)
  • 【Python进阶篇 面向对象程序设计(7) Python操作数据库】
  • Duplicate cleaner pro 的使用技巧
  • 专题:2025供应链数智化与效率提升报告|附100+份报告PDF、原数据表汇总下载
  • 【fitz+PIL】PDF图片文字颜色加深
  • 阿里云错题集分享
  • linux-MySQL的安装
  • Centos 7下使用C++使用Rdkafka库实现生产者消费者
  • 介绍 cnpm exec electron-packager
  • Kafka的无消息丢失配置怎么实现
  • Chromium 引擎启用 Skia Graphite后性能飙升
  • 在徐州网络中服务器租用与托管的优势