首页 > 代码库 > 【leetcode】Single Number (Medium) ☆
【leetcode】Single Number (Medium) ☆
题目:
Given an array of integers, every element appears twice except for one. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
要求O(n)算法,还不能有辅助空间。开始用了各种O(n^2)的方法,都超时,后来突然顿悟了。异或可以消掉两个相同数字。
直接把所有数字异或在一起,就是单独的那个数字了。
#include <iostream>#include <vector>#include <algorithm>using namespace std;class Solution {public://异或可以把两个相同的数字消除 O(n) AC int singleNumber3(int A[], int n) { int ans = 0; for(int i = 0; i < n; i++) { ans ^= A[i]; } return ans; }};int main(){ Solution s; int a[9] = {0,0,1,1,2,3,2,3,4}; int n = s.singleNumber3(a, 9); return 0;}
【leetcode】Single Number (Medium) ☆
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。