260. 只出现一次的数字 III

news/2024/10/18 14:24:10/

1.题目:

 

2.我的代码:

C++:

class Solution {
public:// 使用位操作vector<int> singleNumber(vector<int>& nums) {int pos = 0;int mix = 0;for (auto temp : nums){mix ^= temp;}for (pos = 0; pos < 32; ++pos){if (((mix >> pos) & 1) == 1){break;}}cout << pos;vector<int> v;v.resize(2, 0);for (auto temp : nums){if (((temp >> pos) & 1) == 0){v[0] ^= temp;}else{v[1] ^= temp;}}return v;}
};

Java:

class Solution {// Set和Map都可以public int[] singleNumber(int[] nums) {Set<Integer> set = new HashSet<>();int[] ret = new int[2];for (int temp : nums) {if (!set.contains(temp)) {set.add(temp);} else {set.remove(temp);}}int i = 0;for (int temp : nums) {if (set.contains(temp)) {ret[i] = temp;++i;}}return ret;}
}

3.答案代码:
C++:

/*解法一 排序法*思路:* 1. 从前往后遍历,若出现两次,则为相同元素,索引加2* 2. 若出现一次(前后不等),则为所需要的数,存入vector,索引加1* 3. 若没到尾后位置,说明最后一个元素为出现一次的数*/class Solution {public:vector<int> singleNumber(vector<int>& nums) {sort(nums.begin(), nums.end());vector<int> res;int i = 0;for ( ; i < nums.size() - 1; ) {if (nums[i] == nums[i + 1]) {i += 2;} else {res.push_back(nums[i]);i += 1;}}if (i < nums.size()) {res.push_back(nums[i]);}return res;     }};/*解法二 异或解法*思路:* 1. 只有两个元素出现一次,其它的元素都出现两次.* 2. 全部元素异或消掉出现两次的数字. 异或的结果为s.* 3. 寻找s的lowbit值. lowbit(s)为s的二进制表达式中最右边的1所对应的值. 因此lowbit(s)二进制表达式中只   有一个bit 1.   lowbit(s) = s & -s* 4. 用lowbit(s)将数组分成两组. 一组中,元素A[i] & lowbit(s) == lowbit(s), 即包含lowbit(s)的bit 1. 剩余的是另一组.而且,两个不同数也一定分在不同组. 因为异或值s中的bit1就是   因为两个数字的不同而贡献的.* 5. 同一组的元素再异或求出不同数字. 出现两次的数字, 肯定出现同一组, 异或后消除掉.*/class Solution {public:vector<int> singleNumber(vector<int>& nums) {const int N=nums.size();int s = 0;for(auto x : nums){s ^=x;}int lowbit = s & -s;int a=0,b=0;for(auto x:nums){if((x & lowbit) == lowbit){a^=x;}else{b^=x;}}return vector<int>{a,b};}};

Java:


http://www.ppmy.cn/news/629582.html

相关文章

魔兽世界怀旧服聊天服务器中断,魔兽世界怀旧服世界服务器无法连接

本文导航第1页&#xff1a; 服务器无法连接解决方法 服务器无法连接解决方法 今天是魔兽世界怀旧服的公测时间&#xff0c;服务器已经爆了&#xff0c;很多玩家都在反应游戏服务器进不去&#xff0c;或者服务器断开连接等等问题&#xff0c;针对这些情况&#xff0c;小编特意给…

windows停在欢迎界面进不去的解决办法

亲测有效 工具&#xff1a;腾讯电脑管家 电脑开机后进入安全模式&#xff0c;进入后打开电脑管家-工具箱-管家急救箱-快速急救&#xff0c;完成后根据提示重启电脑就可以了&#xff0c;试验四五次都可以成功(win7系统&#xff0c;其他系统未接触不知道通不通用&#xff09;。…

Linux驱动学习(4) MTD字符驱动和块驱动2

系列文章目录 Linux驱动学习&#xff08;4&#xff09; MTD字符驱动和块驱动1 Linux驱动学习&#xff08;4&#xff09; MTD字符驱动和块驱动2 Linux驱动学习&#xff08;4&#xff09; MTD字符驱动和块驱动3 文章目录 目录 系列文章目录 文章目录 前言 一、mtd字符设备…

魔兽怀旧服怎么找不到服务器,魔兽世界怀旧服世界服务器无法连接怎么办

魔兽世界60年代经典怀旧服中&#xff0c;玩家在登录游戏时会遇到一些客户端问题&#xff0c;比如世界服务器无法连接。那么针对这种现象&#xff0c;有什么方法解决呢&#xff1f;下面就为大家带来魔兽世界怀旧服世界服务器无法连接解决方法。 魔兽世界怀旧服世界服务器无法连接…

我的世界显示有服务器但进不去怎么办,服务器开的但是进不去

服务器后台是开服的 ,但是客户端进不去服务器 然后这是后台的日志 有人看的懂吗?? 8:26:00 信息]:[服务器] 破坏建筑物和游戏环境封禁,严重的永远封IP,请玩家自重! [18:26:40 信息]:[GG DEV]:Flushing data for GG Util [18:26:40 信息]:[GG DEV]:Finished flushing dat…

魔兽世界WOW私服架设详细教程

1. 写在前面&#xff1a;此教程是针对国服WOW3.3.5.13930版本的&#xff0c;因为目前魔兽单机在此版本下运行最正常。WOW4.0以上版本还有些许问题 2. 准备文件 &#xff08;1&#xff09;WOW3.3.5.13930客户端&#xff0c;没有的可以从这里下载 WOW 3.3.2安装文件和WOW3.3.2-3.…

魔兽世界服务器响应慢,《魔兽世界》怀旧服排队太慢进不去解决方法

原标题&#xff1a;《魔兽世界》怀旧服排队太慢进不去解决方法 《魔兽世界》怀旧服排队太慢进不去怎么解决&#xff1f;很多小伙伴们都遇到了这个问题&#xff0c;接下来就由小编给大家带来魔兽世界怀旧服排队太慢进不去解决方法&#xff0c;快进来看一看吧。 魔兽世界怀旧服排…

【kubernetes系列】Kubernetes之volume、pv和pvc

本章节将分享kubernetes中关于存储的资源&#xff0c;包括volume和persistent volume。 一、volume概述 为了保证数据的持久性&#xff0c;必须保证数据存放在外部存储。在普通的docker容器中&#xff0c;为了实现数据的持久性存储&#xff0c;我们在宿主机和容器内做映射&am…