力扣刷题——26. 删除有序数组中的重复项

26. 删除有序数组中的重复项

双指针

快慢指针i和j,i指针前的元素都不重复,j指针往后找不重复的元素,不重复的元素放到i指针的下一个位置

package leetcode;

public class T26 {
	public static void main(String[] args) {
		new T26().new Solution().removeDuplicates(new int[] {1, 2});
	}
	
	class Solution {
	    public int removeDuplicates(int[] nums) {

	        int k = nums.length;

	        int i = 0, j = 0;//快慢指针
	        
	        for (j = 0; j < k; ++j) {
	        	if (nums[j] != nums[i]) {
	        	
					if (i + 1 < k) {
						nums[i + 1] = nums[j];
						i++;
					}
				}
	        }

	        return nums.length == 0 ? 0 : i + 1;//返回的是数组长度,要考虑数组长度为0的情况
	    }
	}

}

posted on 2023-02-26 23:29  pumpkinsBig  阅读(16)  评论(0)    收藏  举报

导航