給定一個數組,包含從 1 到 N 所有的整數,但其中缺了兩個數字。你能在 O(N) 時間內只用 O(1) 的空間找到它們嗎?
以任意順序返回這兩個數字均可。
示例 1:
輸入: [1]
輸出: [2,3]
示例 2:
輸入: [2,3]
輸出: [1,4]
提示:
nums.length <= 30000
AC代碼:
class Solution {
public int[] missingTwo(int[] nums) {
Arrays.sort(nums);
int flag=1,j=0;
int[] vis=new int[2];
for(int i=0;i<nums.length&&j<2;i++){
if(nums[i]!=flag){
vis[j++]=flag;
if(flag==nums[i]-1){
flag=nums[i];
}
}
flag++;
}
while(j<2){
if(flag!=nums[nums.length-1]){
vis[j++]=flag++;
}
else{
flag++;
}
}
return vis;
}
}