【剑指offer|图解|位运算】训练计划VI+撞色搭配

news2024/11/26 8:18:03

在这里插入图片描述
🌈个人主页:聆风吟
🔥系列专栏:数据结构、剑指offer每日一练
🔖少年有梦不应止于心动,更要付诸行动。


文章目录

  • 一. ⛳️训练计划VI(题目难度:中等)
    • 1.1 题目
    • 1.2 示例
    • 1.3 限制
    • 1.4 解题思路
    • 1.5 c++代码
  • 二. ⛳️撞色搭配(题目难度:中等)
    • 2.1 题目
    • 2.2 示例
    • 2.3 限制
    • 2.4 解题思路
    • 2.5 c++代码
  • 📝全文总结

一. ⛳️训练计划VI(题目难度:中等)

⌈ 在线OJ链接,可以转至此处自行练习 ⌋

1.1 题目

教学过程中,教练示范一次,学员跟做三次。该过程被混乱剪辑后,记录于数组 actions,其中 actions[i] 表示做出该动作的人员编号。请返回教练的编号。

1.2 示例

输入: actions = [5, 7, 5, 5]
输出: 7

1.3 限制

  • 1 <= actions.length <= 10000
  • 1 <= actions[i] < 2^31

1.4 解题思路

  1. 📗使用 与运算 我们可以获取数字num二进制位的最右边的一位。
    在这里插入图片描述
  2. 📕配合 右移操作 ,我们可以从低位到高位依次获取num的每一位二进制的值。
  3. 📘建立一个长度位32的数组,使用上面方法存放所有数字各二进制 1 出现的次数之和。
    在这里插入图片描述
  4. 📙将 count 各元素对 3 求余,则结果为 “只出现一次的数字” 的各二进制位。
    在这里插入图片描述

  5. 📓利用 左移或运算,可将数组中的二进制位恢复到数字ret上,然后返回ret即可。
    在这里插入图片描述

1.5 c++代码

class Solution {
public:
    int trainingPlan(vector<int>& actions) {
        int count[32] = { 0 };//用来记录所有数字各二进制 1 出现的次数之和

        //开始统计所有数字各二进制 1 出现的次数之和
        for(int i = 0; i < actions.size(); i++){
            for(int j = 0; j < 32; j++){
                count[j] += (actions[i] >> j) & 1;
            }
        }

        int ret = 0;//记录只出现一次的数字
        int m = 3;
        //将数组中的二进制位恢复到数字ret上
        for(int i = 31; i >= 0; i--){
            ret <<= 1;
            ret |= count[i] % m;
        }

        return ret;
    }
};


二. ⛳️撞色搭配(题目难度:中等)

⌈ 在线OJ链接,可以转至此处自行练习 ⌋

2.1 题目

整数数组 sockets 记录了一个袜子礼盒的颜色分布情况,其中 sockets[i] 表示该袜子的颜色编号。礼盒中除了一款撞色搭配的袜子,每种颜色的袜子均有两只。请设计一个程序,在时间复杂度 O(n),空间复杂度O(1) 内找到这双撞色搭配袜子的两个颜色编号。

2.2 示例

输入: sockets = [4, 5, 2, 4, 6, 6]
输出: [2,5] 或 [5,2]

2.3 限制

  • 2 <= sockets.length <= 10000

2.4 解题思路

拓展知识: 异或运算有个重要的性质,就是两个相同的值异或结果为0,即对任意整数 a 有 a ⊕ a = 0。并且异或运算满足交换律 a ⊕ b = b ⊕ a。

  1. 📗首先让sockets中的所有元素进行异或,并将结果赋给sum。
    在这里插入图片描述

  2. 📕根据异或运算定义,若整数 x⊕y 某位二进制位为 1 ,则 x 和 y 的此二进制位一定不同。
    在这里插入图片描述

  3. 📘因此,我们可以通过与运算从右向左循环判断,获取整数 x⊕y 首位为 1 的位置 ,将其记录于 m 中。
    在这里插入图片描述

  4. 📙将数组sockets中所有元素二进制均右移m位,并&1判断数字是否相同,即可将数组 sockets 拆分为分别包含 52 的两个子数组,分别对两个子数组进行异或即可得出结果。
    在这里插入图片描述

2.5 c++代码

class Solution {
public:
    vector<int> sockCollocation(vector<int>& sockets) {
        
        int sum = 0;//sockets中的所有元素进行异或,并将结果赋给sum
        for(int i = 0; i < sockets.size(); i++){
            sum ^= sockets[i];
        }

        int pos = 0;//记录sum二进制位最右边一个 1 的位数
        for(int i = 0; i < 32; i++){
            if((sum>>i) & 1){
                pos = i;
                break;
            }
        }

		//将拆分子数组,让子数组进行异或,求出说需要的值。
        int x = 0;
        int y = 0;
        for(int i = 0; i < sockets.size(); i++){
            if((sockets[i] >> pos) & 1)
                x ^= sockets[i];
            else
                y ^= sockets[i];
        }

        return {x, y};
    }
};


📝全文总结

本文主要讲解:

     今天的干货分享到这里就结束啦!如果觉得文章还可以的话,希望能给个三连支持一下,聆风吟的主页还有很多有趣的文章,欢迎小伙伴们前去点评,您的支持就是作者前进的最大动力!
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1287374.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024年猫罐头排行榜前十名有哪些?分享2024年猫罐头排行榜前10名

很多人家里的哈基米是不是吃猫粮吃腻了&#xff0c;或者猫猫平时不喜欢喝水&#xff0c;又或者看猫猫太瘦了想入手几款猫罐头但是又愁于不会选择。而且现在猫罐头风这么大不知道选什么好~ 作为从业5年的宠物医生&#xff0c;给你说猫罐头行业内幕。我告诫大家&#xff0c;选择…

Python网络爬虫环境的安装指南

网络爬虫是一种自动化的网页数据抓取技术&#xff0c;广泛用于数据挖掘、信息搜集和互联网研究等领域。Python作为一种强大的编程语言&#xff0c;拥有丰富的库支持网络爬虫的开发。本文将为你详细介绍如何在你的计算机上安装Python网络爬虫环境。 一、安装python开发环境 进…

SIT75179B,5V 供电, 10Mbps,全双工差分芯片/全双工 RS485/RS422 收发器

SIT75179B 是一款 4.5V~5.5V 供电全双工差分芯片&#xff0c;可完全满足 TIA/EIA-485/422 标准要求 的收发器。 SIT75179B 包括一个驱动器和一个接收器&#xff0c;两者均可独立传输信号。 SIT75179B 具有 1/8 负 载&#xff0c;允许 256 个 SIT75179B 收发器并…

【AIGC】AI作图最全提示词prompt集合(收藏级)

目录 一、正向和负向提示词 二、作图参数 你好&#xff0c;我是giszz. AI做图真是太爽了&#xff0c;解放生产力&#xff0c;发展生产力。 但是&#xff0c;你是不是也总疑惑&#xff0c;为什么别人的图&#xff0c;表现力那么丰富呢&#xff0c;而且指哪打哪&#xff0c;要…

陀螺仪防抖术语

陀螺仪防抖术语 fov 视场角 drift 零偏   MotionFusion即运动传感器的融合补偿&#xff0c;对陀螺仪、加速度计等运动测量器件的数据 进行预处理&#xff0c;通过标定和补偿&#xff0c;为防抖提供校准后的陀螺仪数据 ratio 系数 gyro 陀螺仪 calibration 校准 标定 DIS&…

深度优先搜索LeetCode979. 在二叉树中分配硬币

给你一个有 n 个结点的二叉树的根结点 root &#xff0c;其中树中每个结点 node 都对应有 node.val 枚硬币。整棵树上一共有 n 枚硬币。 在一次移动中&#xff0c;我们可以选择两个相邻的结点&#xff0c;然后将一枚硬币从其中一个结点移动到另一个结点。移动可以是从父结点到…

游戏:火星孤征 - deliver us mars - 美图秀秀~~

今天水一篇&#xff0c;借着免费周下载了deliver us mars&#xff0c;玩下来截了好多图&#xff0c;就放这里了。 游戏没有难度&#xff0c;剧情也不难理解&#xff0c;美图到处都是&#xff0c;建模细节也是满满&#xff0c;值得一玩。 游戏中的 A.S.E是守卫飞行机器人&…

甘草书店:#7 2023年11月19日 星期日 波澜不惊的日子里稳步前行

前进&#xff0c;可以伴着惊涛骇浪&#xff0c;也可以波澜不惊。 几番沟通&#xff0c;多方协商之后&#xff0c;甘草书店硬装方案基本确定&#xff0c;近期开始施工。 书目选择方面也在逐步推进。 就像之前设想的&#xff0c;划分成企业经管和个人成长两大类的前提下&#…

三、DVP摄像头调试笔记(图片成像质量微调整,非ISP)

说明&#xff1a;当前调试仅仅用来测试和熟悉部分摄像头寄存器模式 一、图片成像方向控制&#xff0c;基本每个摄像头都会有上下左右翻转寄存器 正向图片 反向图片 二、设置成像数据成各种颜色&#xff0c;&#xff08;黑白/原彩/黄色等等&#xff09; 在寄存器书册描述中…

【实用+干货】如何使用Clickhouse搭建百亿级用户画像平台看这一篇就够了

背景 如果你是用户&#xff0c;当你使用抖音、小红书的时候&#xff0c;假如平台能根据你的属性、偏好、行为推荐给你感兴趣的内容&#xff0c;那就能够为你节省大量获取内容的时间。 如果你是商家&#xff0c;当你要进行广告投放的时候&#xff0c;假如平台推送的用户都是你潜…

感冒 发烧 咳嗽记录

感冒 风寒: 清鼻涕 热感冒: 细菌记录, 脓鼻涕. 咳嗽 先是清痰咳嗽, 后是浓痰,细菌感染, 白细胞噬菌体, 所以要补充蛋白质,维生素. 胸骨上窝 , 天突穴 ,后面上支气管的位置, 往下会变成左右两支,连接到肺部 普通咳嗽: 用哈气拍打背部的方式. 把痰去除. 吃点 盐酸氨溴索片 增加支…

5.2k Star!一个可视化全球实时天气开源项目!

大家好&#xff0c;本文给大家推荐一款全球实时天气开源项目&#xff1a;Earth。 项目简介 Earth 是一个可视化全球天气实况的项目。该项目以可视化的方式展示了全球的天气情况&#xff0c;提供了风、温度、相对湿度等多种天气数据&#xff0c;以及风、洋流和波浪的动画效果…

你好!哈希表【JAVA】

1.初识&#x1f3b6;&#x1f3b6;&#x1f3b6; 它基本上是由一个数组和一个哈希函数组成的。哈希函数将每个键映射到数组的特定索引位置&#xff0c;这个位置被称为哈希码。当我们需要查找一个键时&#xff0c;哈希函数会计算其哈希码并立即返回结果&#xff0c;因此我们可以…

it统一运维平台怎么样?有可以推荐的品牌吗?

随着互联网化&#xff0c;随着信息化的不断发展&#xff0c;企业IT系统的规模和复杂性也在日益增加。在这个背景下&#xff0c;IT统一运维平台就应用而生了。它以一种全面、集成的方式管理企业IT资源&#xff0c;从而提高效率、降低成本、改善服务&#xff0c;为企业提供更快更…

Java中的Future源码讲解

JAVA Future源码解析 文章目录 JAVA Future源码解析前言一、传统异步实现的弊端二、what is Future ?2.1 Future的基本概念2.2Future 接口方法解析2.2.1 取消任务执行cancel2.2.2 检索任务是否被取消 isCancelled2.2.3 检索任务是否完成 isDone2.2.3 检索任务计算结果 get 三、…

智能优化算法应用:基于冠状病毒群体免疫算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于冠状病毒群体免疫算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于冠状病毒群体免疫算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.冠状病毒群体免疫算法4.实验…

Python标准库:time模块【侯小啾Python基础领航计划 系列(十八)】

Python标准库:time模块【侯小啾Python基础领航计划 系列(十八)】 大家好,我是博主侯小啾, 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ…

现货黄金会面临哪些风险?

进行现货黄金投资&#xff0c;我们除了要了解怎么找到交易机会以外&#xff0c;也要知道我们交易会面临哪些风险&#xff0c;了解风险就是做到知己知彼&#xff0c;了解风险才能控制风险。控制住风险&#xff0c;才能为我们稳定盈利打好基础&#xff0c;那么下面我们就来看看在…

设计模式之创建型模式(单例、工厂方法、抽象工厂、原型、建造者)

文章目录 一、设计模式二、设计模式的六大原则三、设计模式分类四、单例设计模式五、工厂方法六、抽象工厂七、原型模式八、建造者模式 一、设计模式 设计模式&#xff08;Design pattern&#xff09;代表了最佳的实践&#xff0c;通常被有经验的面向对象的软件开发人员所采用…

TLSF算法概念,原理,内存碎片问题分析

TLSF算法介绍 TLSF&#xff08;Two-Level Segregated Fit&#xff0c;两级分割适应算法&#xff09;。 第一级&#xff08;first level,简称fl&#xff09;&#xff1a;将内存大小按2的幂次方划分一个粗粒度的范围&#xff0c;如一个72字节的空闲内存的fl是6&#xff08;72介…