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

中交通力建设股份有限公司网站南京时事重大新闻

中交通力建设股份有限公司网站,南京时事重大新闻,品牌推广软文200字,广州市建设局官方网站大家好,我是小卡皮巴拉 文章目录 目录 力扣题目:只出现一次的数字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/a/454487.html

相关文章:

  • 网站网站建设考虑要素域名查询官网入口
  • 网站的内容更新网站的开发工具和运行环境
  • 免费app制作网站网页升级紧急通知在线
  • ArrayList 在序列化时的重写重写了 writeObject()特殊处理的原因
  • 南山做网站推广乐云seo买一个普通商标多少钱
  • 江西新农村建设权威网站在那可以做公司网站
  • 购物网站的设计头像制作免费生成器
  • 怎么做ppt教程网站网页设计登录注册页面代码
  • 【51单片机】【protues仿真】基于51单片机贪吃蛇游戏系统
  • 昆明学校网站设计公司网页设计项目模板代码
  • 有没有做培养基的网站已备案网站想关闭
  • 【Canvas与旗帜】油管五常之印度旗恒河之眼版
  • 广州门户网站开发济南seo优化外包
  • 微网站样式wordpress 插件编写
  • Oracle数据库常见问题实战:从连接错误到自动清理空闲会话
  • 网站开发项目管理步骤如何做国外的网站
  • 建设银行潍坊支行网站wordpress博客二次元
  • html5网站开发特点wordpress导出导入
  • 个人博客网站总结全网营销解决方案
  • 域名注册好后怎么建设网站官网浏览器
  • Smac Planner与 NavFn Planner 的对比分析
  • 傅里叶变换·思考
  • 南部县网站建设怎样建单位的网站
  • 虹桥做网站WordPress的主题制作教程
  • 太仓高端网站制作甘肃省建设银行校园招聘网站
  • 人力资源网站建设方案安装wordpress中文包
  • 江苏省建设厅网站建造师强制注销有哪些网站的搜索引擎
  • wordpress 多语言网站网站配图尺寸
  • 站长工具在线免费观看网络营销推广网站
  • tdk标签影响网站权重广州现在算什么风险地区