From cb30e5543e2cd9e931a56ddfb331b581d9e4156d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=94=90=E6=A0=91=E6=A3=AE?= <14021051@buaa.edu.cn> Date: Wed, 12 Sep 2018 22:06:36 +0800 Subject: [PATCH] Create 136. Single Number.md --- 136. Single Number.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 136. Single Number.md diff --git a/136. Single Number.md b/136. Single Number.md new file mode 100644 index 0000000..b96dd3a --- /dev/null +++ b/136. Single Number.md @@ -0,0 +1,23 @@ +# [136. Single Number](https://leetcode.com/problems/single-number/description/) +# 思路 +## 思路一 +最常规的思路就是用一个map或者散列(unordered_map)记录是否出现过。 +map: 时间复杂度O(nlogn), 空间复杂度O(n) +unordered_map: 时间复杂度O(n), 空间复杂度O(N) + +## 思路二* +若某个数出现两次,则异或操作后得0,所以可以考虑将数组所有元素进行异或操作,最终得到的值就是欲求值。 +时间复杂度O(n), 空间复杂度O(1), 完美 +# C++ +## 思路二 +``` +class Solution { +public: + int singleNumber(vector& nums) { + int res = 0; + for(int num: nums) res = res ^ num; + + return res; + } +}; +```