lintcode --尋找缺失的數

給出一個包含 0 .. N 中 N 個數的序列,找出0 .. N 中沒有出現在序列中的那個數。

樣例

N = 4 且序列爲 [0, 1, 3] 時,缺失的數爲2



/*重新定義一個數組存放排序後的數,空間複雜度和時間複雜度都是O(N)


public class Solution {
    public int findMissing(int[] nums) {
        // write your code here
        boolean[] A = new boolean[nums.length +1];
        for(int i = 0;i<nums.length; i++){
            A[nums[i]] = true;
        }
        int n = 0;
        for(int i = 0;i< A.length ;i++){
            if(A[i] == false){
                n = i;
                break;
            }
        }
        return n;
    }
}*/
//http://www.cnblogs.com/theskulls/p/4943680.html
/*在下面的挑戰中,說可以在原始數組上面操作,如何在原始數組上面操作?空間複雜度並且是O(1) 
 i^i = 0 一個數自身的異或等於0
這個可以空間複雜可以是O(1),就有下面的代碼了
*/
public class Solution {
    public int findMissing(int[] A) {
        int len = A.length;
        for(int i = 0;i< len;i++){
            while( A[i] != i){
                if(A[i] <0 || A[i] >= len){
                    break;
                }
                int tmp = A[i];
                A[i] = A[tmp];
                A[tmp] = tmp;
            }
        }
        for(int i =0;i <len;i++){
            if(A[i] !=i)
                return i;
        }
        return len;
    }
}
/*
class Solution(object):
    def missingNumber(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        n = len(nums)
        return n * (n + 1) / 2 - sum(nums)
        
        
*/


發佈了124 篇原創文章 · 獲贊 3 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章