【leetcode刷题笔记】七、删除有序数组中的重复项

今天的题仍然是考察数组操作的简单题目,在这个题里用到了快慢指针的这样一个思想,通过双指针实现对原数组的修改以及对数组长度的确定。另外可以感觉到自己在做题的过程中不再像最开始那样怕难,怕麻烦了,并且在有多种情况的需要考虑的时候也可以想到,这算是一些进步吧。

解题思路:

思路是这样的,首先让慢指针指向第一个元素,快指针指向第二个,当然这里是把只有一个元素与两个元素的情况讨论出来了,在考虑其他情况,当第一个和第二个元素相等的时候,那就让快指针来确定有几个连续的相同的数字,相同就让快指针向后走一位,直到不相同了,就将这个数字放到慢指针的后一位,并且慢指针的位置也向后移动一位。这就是一个循环的过程,不断递进就可以了。

代码(Java):

class Solution {
    public int removeDuplicates(int[] nums) {
        int slow=0;
        int fast=1;
        if(nums.length==1){
            return 1;
        }
        if(nums.length==2){
            if(nums[slow]==nums[fast]){
                return 1;
            }else{
                return 2;
            }
        }
        while(fast

你可能感兴趣的:(刷题,java,数据结构,算法)