# \#448 Find All Numbers Disappeared in an Array
## *給定一連續數字陣列nums(元素可能重複), 回傳該陣列缺少的數字(回傳型態:數字陣列)*
## Log
- build 20210821 by syhuang
## 初見
- 先對傳入的數字陣列排序(升冪)
- 用兩個變數preNum和nowNum紀錄上一個數字和當前數字做比較, 如果差>1表示中間有缺少的數字, 用迴圈把這些數字做紀錄
- edge case是陣列開頭和結尾的部分可能出現未從1開始, 或nums.length結尾, 分別處理這種情況
- leetcode submit runtime 24%, memory 5%
```javascript=
var findDisappearedNumbers = function(nums) {
let sortedNums = nums.sort(function(a, b) {return a - b;});
let result = [];
let finalNum = sortedNums.length;
let preNum = sortedNums[0];
let nowNum = 1;
//開頭
for(; nowNum < preNum; nowNum++) result.push(nowNum);
for(let i=0; i<sortedNums.length; i++){
nowNum = sortedNums[i];
if(nowNum - preNum > 1){
console.log('now in')
preNum++;
while(nowNum>preNum){
result.push(preNum);
preNum++;
}
}
preNum = sortedNums[i];
}
//收尾
for(; nowNum < finalNum; nowNum++) result.push(nowNum+1);
return result;
};
```
## 備註
- 這題有[另一種](https://ithelp.ithome.com.tw/articles/10225673)特殊解法:用元素作為index檢查其對應的nums[index], 當index+1與nums[index]不相同時標記負數, 最後再檢查陣列中哪個元素非負數, 該元素的index就是缺少的數字, 效率較佳, 但這種解法是for該題目的限制數字範圍在[1,n]才能成立
## 參考
###### tags: `leetcode`, `leetcode-easy`