集合 s 包含從1到 n 的整數。不幸的是,因為資料錯誤,導致集合裡面某乙個元素複製了成了集合裡面的另外乙個元素的值,導致集合丟失了乙個整數並且有乙個元素重複。
給定乙個陣列 nums 代表了集合 s 發生錯誤後的結果。你的任務是首先尋找到重複出現的整數,再找到丟失的整數,將它們以陣列的形式返回。
示例 1:
輸入: nums = [1,2,2,4]
輸出: [2,3]
注意:給定陣列的長度範圍是 [2, 10000]。
給定的陣列是無序的。
分析:用交換兩個位置上的元素的方式將元素放在與陣列下標對應的位置上,對應規則為下標等於元素值減一。從陣列開頭開始,將元素值與該下標值作上述比較,如果不符合條件則將元素值當作下標,看這個位置是否符合上述規則,若不符合則兩者進行交換,繼續迴圈;若符合就繼續迴圈。
注意:如果不寫swap函式的話注意不要寫成這樣,如下。
int temp = nums[i]
;nums[i]
= nums[nums[i]-1
];nums[nums[i]-1
]= temp;
因為第二行=右邊訪問了nums[i]。應該將其寫成temp。
class
solution
}for
(int i =
0; i < nums.length;
++i);}
}return null;
}public
void
swap
(int
nums,
int i ,
int j)
}
錯誤的集合
題目描述 集合 s 包含從1到 n 的整數。不幸的是,因為資料錯誤,導致集合裡面某乙個元素複製了成了集合裡面的另外乙個元素的值,導致集合丟失了乙個整數並且有乙個元素重複。給定乙個陣列 nums 代表了集合 s 發生錯誤後的結果。你的任務是首先尋找到重複出現的整數,再找到丟失的整數,將它們以陣列的形式...
645 錯誤的集合
鏈結 集合 s 包含從1到 n 的整數。不幸的是,因為資料錯誤,導致集合裡面某乙個元素複製了成了集合裡面的另外乙個元素的值,導致集合丟失了乙個整數並且有乙個元素重複。給定乙個陣列 nums 代表了集合 s 發生錯誤後的結果。你的任務是首先尋找到重複出現的整數,再找到丟失的整數,將它們以陣列的形式返回...
645 錯誤的集合
集合 s 包含從1到 n 的整數。不幸的是,因為資料錯誤,導致集合裡面某乙個元素複製了成了集合裡面的另外乙個元素的值,導致集合丟失了乙個整數並且有乙個元素重複。給定乙個陣列 nums 代表了集合 s 發生錯誤後的結果。你的任務是首先尋找到重複出現的整數,再找到丟失的整數,將它們以陣列的形式返回。示例...