赛车pk10计划网站建设,黑群辉建设个人网站,wordpress瀑布流主 #65533;,网站开发工作总结报告1. 题目
一个整型数组 nums 里除两个数字之外#xff0c;其他数字都出现了两次。请写程序找出这两个只出现一次的数字。
要求时间复杂度是O(n)#xff0c;空间复杂度是O(1)。
示例 1#xff1a;
输入#xff1a;nums [4,1,4,6]
输出#xff1a;[1,6] 或 [6,1]示例 2其他数字都出现了两次。请写程序找出这两个只出现一次的数字。
要求时间复杂度是O(n)空间复杂度是O(1)。
示例 1
输入nums [4,1,4,6]
输出[1,6] 或 [6,1]示例 2
输入nums [1,2,10,4,1,4,3,3]
输出[2,10] 或 [10,2]限制
2 nums 10000来源力扣LeetCode 链接https://leetcode-cn.com/problems/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-lcof 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。
类似题目
LeetCode 136. 只出现一次的数字异或^ LeetCode 137. 只出现一次的数字 II位运算
2. 解题
对数组所有的值全部异或得到想要求的两个数的异或值找到该异或值为1的bit用该bit将数组的值分成两组来分别求取异或值即得2个唯一的数
class Solution {
public:vectorint singleNumbers(vectorint nums) {int i, XOR 0;for(i 0; i nums.size(); i)XOR ^ nums[i];for(i 0; i 32; i){if(XOR (1i))break;}int a 0, b 0;for(auto n : nums){if(n(1i))a ^ n;elseb ^ n;}return {a, b};}
};