Leetcode --- 268. Missing Number === ## Description Given an array nums containing n distinct numbers in the range [0, n], return the only number in the range that is missing from the array. ### Examples * Ex1: Input: nums = [3,0,1] Output: 2 Explanation: n = 3 since there are 3 numbers, so all numbers are in the range [0,3]. 2 is the missing number in the range since it does not appear in nums. * Ex2: Input: nums = [0,1] Output: 2 Explanation: n = 2 since there are 2 numbers, so all numbers are in the range [0,2]. 2 is the missing number in the range since it does not appear in nums. * Ex3: Input: nums = [9,6,4,2,3,5,7,0,1] Output: 8 Explanation: n = 9 since there are 9 numbers, so all numbers are in the range [0,9]. 8 is the missing number in the range since it does not appear in nums. * Ex4: Input: nums = [0] Output: 1 Explanation: n = 1 since there is 1 number, so all numbers are in the range [0,1]. 1 is the missing number in the range since it does not appear in nums. ### Constraints * n == nums.length * 1 <= n <= 10^4^ * 0 <= nums[i] <= n * All the numbers of nums are unique. ## Solutions ### Approach 1: hashmap ```python= class Solution: def missingNumber(self, nums: List[int]) -> int: hashmap = {} for i in range(len(nums)): hashmap[nums[i]] =1 for i in range(len(nums)+1): if i not in hashmap: return i ``` #### Complxity Analysis * Time complexity: O(n)+ O(n+1) = > ==O(n)== * Space complexity: dict : ==O(n)== #### submissions Runtime: 201ms Memory: 15.7MB ### Approach 2:bit manipulation ```python= class Solution: def missingNumber(self, nums: List[int]) -> int: l = len(nums) tmp = 0 i = 0 while i < l: tmp = tmp ^ i ^ nums[i] i += 1 return tmp ^ i ``` Key concept: 兩個相同的值被XOR會抵消掉,最後剩下唯一missing value為答案 *Note* * 0 ^ any = any * 1 ^ any = 反向any * any ^ any = 0 #### Complexity analysis * Time complexity O(n) * Space complexity O(1) #### submissions Runtime: 181ms Memory: 15.3MB ### Approach 3 : sum ```python= class Solution: def missingNumber(self, nums: List[int]) -> int: l = len(nums) return int((1+l)*l/2 - sum(nums)) ``` #### Complexity analysis * Time Complexity sum API :O(n) => O(n) * Space complexity O(1) #### Submissions Runtime: 128ms Memory: 15.5MB ###### tags: `Leetcode`