- 最近也在做LeetCode的题,其中有一道题是
- 里面有一句话说:为什么返回数值是整数,但输出的答案是数组呢? 请注意,输入数组是以“引用”方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。
- 在我的理解是:在这个方法调用中,内存保存的数组,会被方法中的直接改变,而此引用非引用。
- 可以看代码
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 integers = new HashSet<>(); for (int i=0;i
//运行后的结果1 1 2 1 2 1 2 2 22
- 第一个方法,我重新定义一个数组 ,将原数组赋值给这个数组,,结果当执行完方法之后,发现得到的结果,与执行的方法产生后的数组,是一致的,然后就可以想当,这个方法是改变了数组的本来定义。
- 第二种的方法,是用Set集合去实现去除重复的元素,虽然得到是数组去重后的大小,但是题是返回数组,所以,这个方法不能去实现。
- 所以这也考验了审题的结果。