leetcode 268. Missing Number

原地哈希。代码没怎么优化,思路清晰。

    int missingNumber(vector<int>& nums) {
        int size = nums.size();
        
        for (int i = 0; i < size; i++) {
            if (nums[i] != -1) {
                if (nums[i] == size) {
                    nums.push_back(size);
                    nums[i] = -1;
                }
                else if (i != nums[i]) {
                    swap(nums[i], nums[nums[i]]);
                    i--;  // 不前进的意思,由于上面i++
                }
            }
        }
        if (nums.size() != size + 1)
            return size;
        for (int i = 0; i <= size; i++)
            if (i != nums[i])
                return i;
    }

 

posted on 2018-02-08 09:54  willaty  阅读(93)  评论(0编辑  收藏  举报

导航