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

javaweb源码免费分享网站网站运营推广

javaweb源码免费分享网站,网站运营推广,做网站找客源,wordpress隐藏音乐播放器大家好,我是小卡皮巴拉 文章目录 目录 力扣题目:只出现一次的数字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/261054.html

相关文章:

  • 江苏网站建设效果中国国家培训网是真的吗
  • 服务器怎样建设网站友情链接的方式如何选择
  • 网站底色什么颜色好看郑州网站优化公司
  • 在线制作电子简历合肥百度快速排名优化
  • 企业网站本身应该就是企业( )的一部分seo关键词怎么填
  • 泰康人寿保险官方网站查排名网站
  • 软件工程 旅游网站开发er图谷歌搜索为什么用不了
  • wordpress小论坛seo网络贸易网站推广
  • 做系统网站信息检索网站湖北seo关键词排名优化软件
  • 安徽网站建设天锐科技推广网络公司
  • 网站商务通客服端友链交换平台源码
  • vue做的小网站外贸网站制作推广
  • 天津做网站找津坤科技专业武汉百度关键词推广
  • iis如何做网站管理器seo推广软件下载
  • 开源手机网站系统免费推广平台有哪些
  • xp怎么做网站服务器长沙网
  • 在线长图生成器南昌seo计费管理
  • 平面广告设计要用什么软件有哪些深圳seo推广外包
  • 手机网站可以做百度商桥吗网站建设方案模板
  • 北京哪个公司做网站好济南seo优化外包服务公司
  • js怎么做网站客服聊天seo网站推广专员招聘
  • 电子商务 做网站360优化大师下载安装
  • dw做网站怎样插入表单济南网站建设制作
  • 做爰全过程免费网站网站建设
  • 地方生活门户网站市场推广方案
  • 微商网络营销的优化和推广方式
  • 教做衣服的网站有哪些谷歌seo推广服务
  • 国内产品推广网站站长工具百科
  • 公司注册资金是真实的吗seo推广公司哪家好
  • 电商网站建设浩森宇特百度爱采购官网首页