OJ练习LeetCode-26:删除有序数组中的重复项

题目

OJ练习LeetCode-26:删除有序数组中的重复项_第1张图片

 OJ练习LeetCode-26:删除有序数组中的重复项_第2张图片

思路

1.根据题目要求,在有序数组中出现相同数字时,只保留一个,因此遍历数组当遇到不同的值时,让该值的下标替换为重复数字第一次出现时的下标;

2.因此,需要额外的一个变量来记录未重复数字的下标;

3.最后将这个下标返回,即此时数组内的元素个数。

OJ练习LeetCode-26:删除有序数组中的重复项_第3张图片

 即变量i用来遍历数组,变量t用来控制位置以及统计元素个数。

完整代码

class Solution {
    public int removeDuplicates(int[] nums) {
        int t = 0;  //用来记录数组中未出现重复元素的下标
        //遍历数组
        for(int i = 0;i < nums.length;i++){
            //第一个元素始终保持不变,即当t>0时再开始替换
            //当出现相等元素时,t的值不会改变
            //当出现不相等元素时,直接将i下标处的元素移到前面
            if(i == 0 || nums[i] != nums[i - 1]){
                nums[t] = nums[i];
                t++;
            }
        }
        return t;
    }
}

OJ练习LeetCode-26:删除有序数组中的重复项_第4张图片

 

你可能感兴趣的:(OJ练习,leetcode,算法,数据结构,java)