zoukankan      html  css  js  c++  java
  • 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. 所以这也考验了审题的结果。
  • 相关阅读:
    WinForm 无边框窗体 拖动工作区移动窗体
    [CSS]火狐和IE对css样式解释的差异
    md类型文件迁移至Notion(img资源也可以上传)
    google推出notebook软件
    刚收到几个google analytics 邀请,有真正需要的我可以送给他一个
    最近用drupal做了一个CMS网站
    google adsense 又增加了Picasa的推介,我已加上
    googlepages空间的一个bug
    近段时间比较郁闷
    开复与学生面对面
  • 原文地址:https://www.cnblogs.com/YJBlog/p/10659724.html
Copyright © 2011-2022 走看看