2017年4月17日 星期一

[Leetcode C++解析] 268. Missing Number

大家好
這次要講的題目是Missing Number
題目網址 https://leetcode.com/problems/missing-number/#/description

這一題大致上算是簡單的題目
在此稍微說明一下:
給你一個包含n個不會重複字的陣列
其值介於0到n
希望你從中找出陣列之中唯一缺少的一個數字
並且輸出該數字

舉例來說
陣列#1 : [0 1 2 4]
答案為3
陣列#2 : [0 1 2]
答案為3

相信有些人可能不理解陣列#2的答案為何是3
(明明數字都有了幹嘛還要多一個3)

由於題目是說給n個不重複的數字
且這些數字的值介於0到n之間
以#2的例子來說
陣列共有3個數字0.1.2
因此n=3

《以下是我的解題方式》
因為數字不重複
所以可以透過累加的方式將陣列的n個數總和起來
再用該有的數總和減掉上面的總和就是答案囉

以#1來說
陣列的總和=0+1+2+4=7
應有的總和=0+1+2+3+4=10
所求=10-7=3

《曾經錯過的測資》
陣列 : []
陣列 : [0]

《程式碼在這》
【小提醒:盡量自己先參考上面的想法寫出來,這樣比較不會有背程式碼的概念】


class Solution {
public:
    int missingNumber(vector<int>& nums) {
        int sum=0,sz=nums.size();
        for(int i = 0 ; i < sz ;++i ) sum += nums[i];
     
        return sz * ( sz + 1 ) / 2 - sum;
    }
};

沒有留言:

張貼留言