Remove Duplicates from Sorted Array

第一篇博客,今天似乎充满了鸡血,开始刷LeetCode,做一下记录。

题目为从排序的数组中删除重复的元素,还是没有什么思路,对于数组一无所知。看了一下discuss

class Solution {
    public int removeDuplicates(int[] nums) {
        if(nums.length <= 0){
            return 0;
        }
        int j = 0;
        for(int i = 0; i < nums.length; i++){
            if(nums[i] != nums[j]){
                nums[++j] = nums[i];    
            }
        }
        return j + 1;
    }
}

 

在本地运行,不通,我知道肯定不通,就直接去judging,然后,出现错误,排错,了解了以下几点:

1. nums=0;   四不像,数组与数组元素的区分,nums 是数组名字,nums[]表示的是数组,nums[0]表示第一个元素。

本题需要判断是不是非空数组,判断的话应该用‘ == ’(我不知道怎么判[] ,用元素为零是不对的),所以用数组的长度。

2.数组名.length 表示的是数组的长度,可以不用指出来这是int型,这是数组的属性。

3.运行时出现Line 8: java.lang.ArrayIndexOutOfBoundsException: 2  删空格不对,原来是数组下标越界,也就是说你访问的元素索引大于了数组的个数-1。

回头检查我的代码,果然,没背准确,i与j 在赋值时出错,就说怎么不理解呢,应该是把j索引的重复元素,赋值到i索引的元素,j是去索引新的元素,所以是拿它去dosomething.

4.++i, 先赋给i,在加一,来确定新数组的长度,即返回值。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值