给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。

给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。

给定数组 nums = [1,1,2], 

函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 

你不需要考虑数组中超出新长度后面的元素。
================================
关于此类的题目,提取有效信息,有序数组,应该想到利用双指针来进行处理;
我们需要跳过重复的元素,然后遇到非重复元素进行覆盖操作
解法1.
 1  public static int removeRepeat(int[] array){
 2         int len = array.length;
 3         int temp = 0;
 4 
 5         if (len == 0 ){
 6             return 0;
 7         }else {
 8             for (int i = 0; i < len; i++) {
 9                 if (array[temp] != array[i]){
10                     array[++temp] = array[i];
11                 }
12 
13             }
14 
15             return temp+1;
16 
17         }
18 
19 
20 
21     }

2.去重,可以利用map进行操作,以 array[i] — i, 进行存储,这样可以起到去重的效果,然后我们遍历一遍数据,进行替换覆盖就可以了;

注意,hashmap是非顺序存储的,我们需要保证数组的有序排列,所以需要用到有存储顺序的linkedhashmap进行存储

这个实现有点慢,好歹也是自己第一次的解题思路,多一种思路未尝不可

 1 public static  int removeDuplicates(int[] nums) {
 2         LinkedHashMap<Integer, Integer> hashMap = new LinkedHashMap<>();
 3         for (int i = 0; i < nums.length; i++) {
 4             hashMap.put(nums[i],i);
 5         }
 6         int index = 0;
 7         for (Map.Entry<Integer, Integer> entry:hashMap.entrySet()) {
 8             Integer key = entry.getKey();
 9             nums[index] = key;
10             index++;
11         }
12         return index;
13     }

 

 

 

 

 





版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/2569.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • MongoDB(四)—-MongoDB的文档操作

    MongoDB(四)—-MongoDB的文档操作

    2020年11月12日
    167
  • qxdm使用教程_log命令

    qxdm使用教程_log命令(一)、首先保证PC机和手机串口(或并口)之间连接畅通,这个可以从QXDM工具的系统栏看出,如果是MSM6000的项目,系统栏会显示“COMX:SURF6000-ZRF6000”;如果是MSM6025的项目,系统栏会显示“COMX:SURF6025-ZRF6025”。其中X为某个串口,比如COM1,X=1等。(二)、QXDM打开后,先配置好messageview要打印的信息,具体的配置如

    2022年10月2日
    2
  • Eureka集群配置

    Eureka集群配置eureka作为注册中心,生产环境必须多节点部署,保证其高可用性。现以两台服务器来完成集群部署。服务器A:172.16.21.34服务器B:172.16.21.35方式一:使用ip形式完成。服务器A:172.16.21.34server:port:7777spring:application:name:register#指定eureka客户端的登录账户security:user:…

    2022年5月1日
    45
  • Lytro光场相机上手视频

    Lytro光场相机上手视频这会儿大家都知道光场相机Lytro了,用一个词来形容的话,应该是“新颖”,你在生活中肯定很难想到相机还可以这么玩。相信你第一印象应该是其微小的体积。如果要你坦率地说,毫无疑问你希望得到一个单反。其细小的身躯,精细的做工让我们想到了iPodNano和iSight,而其桌面的软件当前也只支持Mac,Windows版本正在开发中。视频1…

    2025年8月23日
    5
  • webstorm 2022.01.13 激活码【2021最新】

    (webstorm 2022.01.13 激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/ide…

    2022年3月31日
    121
  • 下列那个类有获取PropertyDescriptor实例的方法_java反射怎么理解

    下列那个类有获取PropertyDescriptor实例的方法_java反射怎么理解JAVA中反射机制(JavaBean的内省与BeanUtils库)内省(Introspector)是Java语言对JavaBean类属性、事件的一种缺省处理方法。  JavaBean是一种特殊的类,主要用于传递数据信息,这种类中的方法主要用于访问私有的字段,且方法名符合某种命名规则。如果在两个模块之间传递信息,可以将信息封装进JavaBean中,这种对象称为“值对象”(ValueOb…

    2022年10月1日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号