博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode 136.Single Number (只出现一次的数字)
阅读量:2179 次
发布时间:2019-05-01

本文共 564 字,大约阅读时间需要 1 分钟。

题目描述:

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

说明:

你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?

示例 1:

输入: [2,2,1]输出: 1

示例 2:

输入: [4,1,2,1,2]输出: 4

 

 

AC C++ Solution:

使用异或运算就能解决,思路如下:

假设我们有一个数组 - [2,1,4,5,2,4,1]。

=> 0 ^ 2 ^ 1 ^ 4 ^ 5 ^ 2 ^ 4 ^ 1

=> 0 ^ 2 ^ 2 ^ 1 ^ 1 ^ 4 ^ 4 ^ 5 (异或可交换顺序(A ^ B = B ^ A ),所以重新排列,将相同的数字放在一起)

=> 0 ^ 0 ^ 0 ^ 0 ^ 5

=> 0 ^ 5

=> 5 :)

 

 

代码:

class Solution {public:    int singleNumber(vector
& nums) { int result = 0; for(auto i : nums) result ^= i; //XOR(异或)运算 return result; } };

 

 

 

 

 

 

转载地址:http://ognkb.baihongyu.com/

你可能感兴趣的文章
【LEETCODE】228-Summary Ranges
查看>>
【LEETCODE】27-Remove Element
查看>>
【LEETCODE】66-Plus One
查看>>
【LEETCODE】26-Remove Duplicates from Sorted Array
查看>>
【LEETCODE】118-Pascal's Triangle
查看>>
【LEETCODE】119-Pascal's Triangle II
查看>>
【LEETCODE】88-Merge Sorted Array
查看>>
【LEETCODE】19-Remove Nth Node From End of List
查看>>
【LEETCODE】125-Valid Palindrome
查看>>
【LEETCODE】28-Implement strStr()
查看>>
【LEETCODE】6-ZigZag Conversion
查看>>
【LEETCODE】8-String to Integer (atoi)
查看>>
【LEETCODE】14-Longest Common Prefix
查看>>
【LEETCODE】38-Count and Say
查看>>
【LEETCODE】278-First Bad Version
查看>>
【LEETCODE】303-Range Sum Query - Immutable
查看>>
【LEETCODE】21-Merge Two Sorted Lists
查看>>
【LEETCODE】231-Power of Two
查看>>
【LEETCODE】172-Factorial Trailing Zeroes
查看>>
【LEETCODE】112-Path Sum
查看>>