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

b2b网站平台大全合肥网站seo

b2b网站平台大全,合肥网站seo,编程入门先学什么python,用自己的名字设计logo大家好,我是小卡皮巴拉 文章目录 目录 力扣题目:只出现一次的数字III 题目描述 解题思路 问题理解 算法选择 具体思路 解题要点 完整代码(C) 兄弟们共勉 !!! 每篇前言 博客主页&…

大家好,我是小卡皮巴拉

文章目录

目录

力扣题目:只出现一次的数字III

题目描述

解题思路

问题理解

算法选择

具体思路

解题要点

完整代码(C++)

兄弟们共勉 !!! 


每篇前言

博客主页:小卡皮巴拉

咱的口号:🌹小比特,大梦想🌹

作者请求:由于博主水平有限,难免会有错误和不准之处,我也非常渴望知道这些错误,恳请大佬们批评斧正。

力扣题目:只出现一次的数字III

原题链接:260. 只出现一次的数字 III - 力扣(LeetCode)

题目描述

给你一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。你可以按 任意顺序 返回答案。

你必须设计并实现线性时间复杂度的算法且仅使用常量额外空间来解决此问题。

示例 1:

输入:nums = [1,2,1,3,2,5]
输出:[3,5]
解释:[5, 3] 也是有效的答案。

示例 2:

输入:nums = [-1,0]
输出:[-1,0]

示例 3:

输入:nums = [0,1]
输出:[1,0]

解题思路

问题理解

本题要求在给定的整数数组 nums 中找出恰好只出现一次的两个元素,数组里其余元素都出现两次。需要设计一个时间复杂度为线性(O(n))且仅使用常量额外空间(O(1))的算法来解决此问题,最后按任意顺序返回这两个只出现一次的元素。

算法选择

采用位运算的方法。位运算的异或操作能高效地处理元素出现次数的问题,结合异或操作的特性和对结果的进一步处理,可以找出只出现一次的两个元素。

具体思路

  1. 计算所有元素的异或结果

    • 初始化一个变量 xor_all 为 0。

    • 遍历数组 nums,将每个元素 e 与 xor_all 进行异或操作,即 xor_all ^= e。由于相同元素异或结果为 0,所以最终 xor_all 的值是那两个只出现一次的元素的异或结果。

  2. 找出异或结果中某一位为 1 的位

    • 通过 unsigned int diff_bit = static_cast<unsigned int>(xor_all) & static_cast<unsigned int>(-static_cast<unsigned int>(xor_all)); 找出 xor_all 中最右边为 1 的位。这一位为 1 意味着那两个只出现一次的元素在该位上不同。

  3. 根据该位将数组元素分组并分别异或

    • 初始化两个变量 num1 和 num2 为 0。

    • 再次遍历数组 nums,对于每个元素 e,检查其在 diff_bit 位上的值:

      • 如果 e & static_cast<int>(diff_bit) 为真,说明 e 在该位上为 1,将其与 num1 进行异或操作,即 num1 ^= e

      • 否则,说明 e 在该位上为 0,将其与 num2 进行异或操作,即 num2 ^= e

    • 这样分组后,相同的元素会被分到同一组,经过异或操作后会相互抵消,最终 num1 和 num2 分别是那两个只出现一次的元素。

  4. 返回结果

    • 返回包含 num1 和 num2 的向量 {num1, num2}

解题要点

  1. 异或操作的特性运用:利用异或操作 a ^ a = 0 和 a ^ 0 = a 的特性,通过对所有元素异或得到两个只出现一次元素的异或结果。

  2. 找出不同位:通过 xor_all 与 -xor_all 进行按位与操作,找出两个只出现一次元素不同的某一位,以此作为分组的依据。

  3. 分组异或:根据找出的不同位将数组元素分组并分别异或,最终得到两个只出现一次的元素。

完整代码(C++)

class Solution {
public:std::vector<int> singleNumber(std::vector<int>& nums) {int xor_all = 0;// 遍历数组,将所有元素进行异或操作,得到两个只出现一次元素的异或结果for(auto e : nums){xor_all ^= e;}// 找出 xor_all 中最右边为 1 的位,该位表明两个只出现一次的元素在该位不同unsigned int diff_bit = static_cast<unsigned int>(xor_all) & static_cast<unsigned int>(-static_cast<unsigned int>(xor_all));int num1 = 0, num2 = 0;// 根据 diff_bit 位将数组元素分组并分别异或for(auto e : nums){if(e & static_cast<int>(diff_bit)) num1 ^= e;else num2 ^= e;}return {num1, num2};}
};

兄弟们共勉 !!! 

码字不易,求个三连

抱拳了兄弟们!

http://www.dtcms.com/wzjs/270218.html

相关文章:

  • 怎样联系自己建设网站南宁seo计费管理
  • 德网站建设关键词搜索引擎优化推广
  • 整装公司排名前十强天津网站优化公司
  • 想找手工活做 哪个网站可靠微信引流被加软件
  • 郑州富士康有多少人员工青岛seo服务
  • 微信辅助做单网站网课培训机构排名前十
  • 广州网站建设网站托管运营百度网盘搜索引擎网站
  • 网站title keywords百度网址大全下载安装
  • 电子商务网站建设与维护试卷网站关键词优化方案
  • 设置本机外网ip做网站百度知道电脑版网页入口
  • 建设制作外贸网站的公司简介曼联vs恩波利比分
  • 网站虚拟主机费用baidu百度网盘
  • 自己怎么做网站的聚合页面建网站需要多少钱
  • 怎么网站建设怎么样seo网站推广seo
  • 江苏大都建设工程有限公司网站百度代理加盟
  • 相亲网站拉人做基金十大经典广告营销案例
  • 做网站的商家怎么后去流量费看广告赚钱一天50元
  • 在线做交互网站网络营销渠道的功能
  • 那里有正规网站开发培训学校株洲企业seo优化
  • 网站开发是否用html5sem竞价推广
  • 网站后台图片新版阿里指数官网
  • 做一个公司网站的费用艾滋病多久能查出来
  • 云南楚雄天气预报搜索关键词优化服务
  • 房产网站建设方案市场营销推广策略
  • 珠海网站制作系统登录百度app
  • 无锡网站公司郑州百度推广公司地址
  • 网站栏目页如何做恶意点击软件哪几种
  • 冒充it男给某网站做修复竞价托管推广多少钱
  • 网站开发者工具下载seo岗位工资
  • 商务网站的建设阶段包括今天刚刚最新消息2023