缺失数字
題目描述
給定一個包含 0, 1, 2, …, n 中 n 個數的序列,找出 0 … n 中沒有出現在序列中的那個數。
示例 1:
輸入: [3,0,1] 輸出: 2示例 2:
輸入: [9,6,4,2,3,5,7,0,1] 輸出: 8解法
思路1:使用額外數組存儲0~n,遍歷數組,缺失的即為答案
/*** 使用額外數組* 空間復雜度O(n)* 時間復雜度O(n)* @param nums* @return*/ public int missingNumber(int[] nums) {int []arr = new int[nums.length +1];for(int num:nums) {arr[num] = num;}for(int i=0;i<arr.length;i++) {if(arr[i] == 0) {return i;}}return 0;}思路2:原數組排序,對空間進行優化
/*** 思路2:數組排序* 找到缺失的那個數字* 空間復雜度O(n)* 時間復雜度O(1)* @param nums* @return*/public int missingNumber(int[] nums) {int temp=0;for(int i=0;i<nums.length;i++) {if(nums[i] != i && nums[i] != nums.length) {temp = nums[nums[i]];nums[nums[i]] = nums[i];nums[i] = temp;i--;}}for(int i=0;i<nums.length;i++) {if(nums[i]!=i) {return i;}}return nums.length;}思路2:位運算
利用異或(不同為1,相同為0)特性:
0^4=4
4^4=0
4^ 0 ^4=0
總結
- 上一篇: 帕斯卡三角形杨辉三角
- 下一篇: API 和 SPI