leetcode之丟失的數字

本文主要記錄一下leetcode之丟失的數字算法

題目

給定一個包含 [0, n] 中 n 個數的數組 nums ,找出 [0, n] 這個範圍內沒有出如今數組中的那個數。

 

進階:

你可否實現線性時間複雜度、僅使用額外常數空間的算法解決此問題?
 

示例 1:

輸入:nums = [3,0,1]
輸出:2
解釋:n = 3,由於有 3 個數字,因此全部的數字都在範圍 [0,3] 內。2 是丟失的數字,由於它沒有出如今 nums 中。
示例 2:

輸入:nums = [0,1]
輸出:2
解釋:n = 2,由於有 2 個數字,因此全部的數字都在範圍 [0,2] 內。2 是丟失的數字,由於它沒有出如今 nums 中。
示例 3:

輸入:nums = [9,6,4,2,3,5,7,0,1]
輸出:8
解釋:n = 9,由於有 9 個數字,因此全部的數字都在範圍 [0,9] 內。8 是丟失的數字,由於它沒有出如今 nums 中。
示例 4:

輸入:nums = [0]
輸出:1
解釋:n = 1,由於有 1 個數字,因此全部的數字都在範圍 [0,1] 內。1 是丟失的數字,由於它沒有出如今 nums 中。
 

提示:

n == nums.length
1 <= n <= 104
0 <= nums[i] <= n
nums 中的全部數字都 獨一無二

來源:力扣(LeetCode)
連接:https://leetcode-cn.com/problems/missing-number
著做權歸領釦網絡全部。商業轉載請聯繫官方受權,非商業轉載請註明出處。

題解

class Solution {
    public int missingNumber(int[] nums) {
        int result = nums.length;
        for (int i = 0; i < nums.length; ++i){
            result ^= nums[i];
            result ^= i;
        }
        return result;
    }
}

小結

這裏利用nums中的全部數字都獨一無二這個條件,使用異或運算來對數組index及值進行運算,遍歷完得出的結果就是丟失的數字。數組

doc

相關文章
相關標籤/搜索