/** * @param {number[]}nums * @return {number[]} */ var missingTwo = function(nums) { // 先对于nums做升序排序 let sortedNums = nums.sort(function(a, b) { return a - b; });
let sortedNumsLen = sortedNums.length;
// 返回值 let res = [];
// 扫描sortedNums中是否存在缺的数字 for (let i = 0; i < sortedNums.length - 1; i++) { let cur = sortedNums[i]; let next = sortedNums[i+1]; if (cur + 1 !== next) { res.push(cur+1); }
}
// 如果仍然有缺失的数字则往两边搜索 // 向左搜索 if (res.length < 2) { let head = sortedNums[0];
for (let i = 0; i < head - 1; i++) { res.push(i + 1); } }
// 向右搜索 if (res.length < 2) { let tail = sortedNums[sortedNumsLen - 1];
// 这里需要保存一下res.length当前的值,因为for循环体内改变了res.length let resLen = res.length; for (let i = 0; i < (2 - resLen); i++) { res.push(tail + i + 1); } }