刪除有序數(shù)組中的重復(fù)項
題目描述:給你一個有序數(shù)組 nums 昏滴,請你 原地 刪除重復(fù)出現(xiàn)的元素驮俗,使每個元素 只出現(xiàn)一次 松靡,返回刪除后數(shù)組的新長度。
不要使用額外的數(shù)組空間坛增,你必須在 原地 修改輸入數(shù)組 并在使用 O(1) 額外空間的條件下完成获雕。
示例說明請見LeetCode官網(wǎng)。
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有收捣。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán)届案,非商業(yè)轉(zhuǎn)載請注明出處。
解法一:數(shù)組的遍歷
- 首先罢艾,如果數(shù)組nums為空或者數(shù)組nums的長度為0楣颠,直接返回0;
- current記錄當前不重復(fù)的索引位置咐蚯,遍歷數(shù)組童漩,pre記錄上一位的值,當當前位index的值和pre的值相等時仓蛆,
index+1
后往后繼續(xù)遍歷睁冬;當當前位的值和pre的值不相等時,更新current的值為當前index位的值,并且將current往后移一位豆拨,index+1直奋,pre不停的往后移,直到遍歷結(jié)束位置施禾。
public class LeetCode_026 {
public static int removeDuplicates(int[] nums) {
if (nums.length == 0) {
return 0;
}
int current = 1;
int index = 1;
int pre = nums[0];
while (index < nums.length) {
if (!(nums[index] == pre)) {
nums[current++] = nums[index];
}
pre = nums[index];
index++;
}
return current;
}
public static void main(String[] args) {
int[] nums = new int[]{0, 0, 1, 1, 1, 2, 2, 3, 3, 4};
int result = removeDuplicates(nums);
System.out.println(result);
for (int num : nums) {
System.out.print(num + " ");
}
}
}
【每日寄語】 縱有千古脚线,橫有八荒;前途似海弥搞,來日方長邮绿。