LeetCode的一道题的个人见解

文章目录

  1. 最近也在做LeetCode的题,其中有一道题是删除排序数组中的重复项
  2. 里面有一句话说:为什么返回数值是整数,但输出的答案是数组呢?
    请注意,输入数组是以“引用”方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。
  3. 在我的理解是:在这个方法调用中,内存保存的数组,会被方法中的直接改变,而此引用非引用。
  4. 可以看代码
package com.study.simple;

import java.util.HashSet;
import java.util.Set;

/**
 * Created by IntelliJ IDEA.
 *
 * @version : 1.0
 * @auther : Firewine
 * @mail : 1451661318@qq.com
 * @Program Name: 删除排序数组中的重复项 .java
 * @Create : 2019-02-23-19:35
 * @Description :
 */
public class 删除排序数组中的重复项 {

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

    }

    public int removeDuplicates2(int[] nums) {
        Set<Integer> integers = new HashSet<>();


        for (int i=0;i <nums.length;i++){
            integers.add(nums[i]);
        }

        return integers.size();

    }

    public static void main(String[] args) {


        删除排序数组中的重复项 aa = new 删除排序数组中的重复项();
        int []nums =new int[]{1,1,2};
        int[] temp = nums;
        for (int i =0; i< nums.length;i++){
            System.out.printf("%s ",nums[i]);

        }
        int a = aa.removeDuplicates(nums);
        System.out.println();
        for (int i=0; i< a;i++){
            System.out.printf("%s  ",nums[i]);
        }

        System.out.println();
        for (int i =0; i< temp.length;i++){
            System.out.printf("%s ",temp[i]);

        }
        System.out.println();
        System.out.println(a);

        System.out.println();
        System.out.println(aa.removeDuplicates2(nums));
    }
}

//运行后的结果
1 1 2 
1  2  
1 2 2 
2

2

  1. 第一个方法,我重新定义一个数组 ,将原数组赋值给这个数组,,结果当执行完方法之后,发现得到的结果,与执行的方法产生后的数组,是一致的,然后就可以想当,这个方法是改变了数组的本来定义。
  2. 第二种的方法,是用Set集合去实现去除重复的元素,虽然得到是数组去重后的大小,但是题是返回数组,所以,这个方法不能去实现。
  3. 所以这也考验了审题的结果。
posted @ 2019-02-27 10:47  Firewine  阅读(223)  评论(0编辑  收藏  举报