leetcode第26題,給出乙個非降序的陣列,刪除重複的元素.
題目明確要求不能使用額外的陣列空間,一開始,沒想到什麼好的演算法.
但是,它又有提示,不需要考慮陣列中超出新長度後面的元素,所有,就想到了覆蓋移動這樣的方法.
思想很簡單,就是使用兩個下標,乙個下標表示要返回的下乙個要被替換的數,同時這個下標加1代表要返回的長度,乙個下標為遍歷陣列的下標.
首先,遍歷陣列,若遇到大於nums[index]的數,首先判斷當前下標是否為index的下乙個,如果是下乙個的話覆蓋相當於重複了,把自己賦給自己,若i與index的距離大於1,則在自增index的同時,把i處的值覆蓋到index處,這樣就不用移動後面的數了,而且可以保證這樣的數有序,最後返回index+1,表示不重複的元素的個數,即新陣列的長度.
嗯,一次就ac,舒服.
其他解法?不清楚,看了別人的題解差不多都是這樣的,不過叫法不一樣,叫雙指標,快慢指標,本質都是一樣.
實在沒想到上一題這麼不堪一擊,然後下一題是leetcode的27題,與上一題有點類似,給定乙個陣列,刪除數值等於指定值的所有元素.
1;還是一樣的解法啊,覆蓋移動,快慢指標,這是上次的**改了if的判斷條件,然後就:
不想說什麼了.
github 碼雲
陣列 刪除排序陣列中重複的項
題目要求 給定乙個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 o 1 額外空間的條件下完成。解題思路 題目要求不能使用額外的空間,並且複雜度是o 1 所以需要一次遍歷去解決問題。採用雙指標法 乙個...
陣列 刪除排序陣列中的重複項
給定乙個排序陣列,你需要在 原地 刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在 原地 修改輸入陣列 並在使用 o 1 額外空間的條件下完成。示例 1 給定陣列 nums 1,1,2 函式應該返回新的長度 2,並且原陣列 nums 的前兩個元素被...
LeetCode 陣列 刪除排序陣列中的重複項
給定乙個排序陣列,你需要在 原地 刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在 原地 修改輸入陣列 並在使用 o 1 額外空間的條件下完成。示例 給定 nums 0,0,1,1,1,2,2,3,3,4 函式應該返回新的長度 5,並且原陣列 nu...