给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 几个Python小案例,爱上Python编程!「建议收藏」

    Python是一种面向对象的解释型编程语言,源代码与解释器CPython遵守GPL协议,Python语法简洁清晰。语法简洁清晰,那么我们用少量的Python代码能做哪些有趣的东西?一、画爱心表白1、图形都是由一系列的点(X,Y)构成的曲线,由于X,Y满足一定的关系,所以我们就可以建立模型,建立表达式expression,当满足时,两个for循环(forXinrange;f…

    2022年4月5日
    67
  • Python爬虫以及数据可视化分析「建议收藏」

    Python爬虫以及数据可视化分析「建议收藏」Python爬虫以及数据可视化分析之B站动漫排行榜信息爬取分析简书地址:https://www.jianshu.com/u/40ac87350697简单几步,通过Python对B站番剧排行数据进行爬取,并进行可视化分析源码文件可以参考Github上传的项目:https://github.com/Lemon-Sheep/Py/tree/master下面,我们开始吧!PS:作为Python爬虫初学者,如有不正确的地方,望各路大神不吝赐教[抱拳]本项目将会对B站番剧排行的数据进行网页信息爬取以及

    2022年6月16日
    33
  • Jps算法_JPS算法

    Jps算法_JPS算法目录概念 强迫邻居(ForcedNeighbour) 跳点(JumpPoint) JPS寻路算法(JumpPointSearch) 实现原理 示例过程 JPS+(JumpPointSearchPlus) 预处理 示例过程 总结 参考概念JPS(jumppointsearch)算法实际上是对A*寻路算法的一个改进,因此在阅读本文之前需要先了解A*算法。A*算法在扩展节点时会把节点所有邻居都考虑进去,这样openlist中点的..

    2026年1月29日
    3
  • 物业 小程序_智慧物业平台app安卓版

    物业 小程序_智慧物业平台app安卓版智慧小区小程序功能小区资讯展示小区最新的资讯和动态.让小区居民对小区的活动有全盘的了解.小区资讯详情.将对活动的具体情况.有一个更详尽的描述。物业通知由物业服务公司通过管理后台发布.能将最新的物业通知推送到用户手机桌面.实现物业管理信息的即时推送.点击即可查看详情。邮包提醒将以数字的方式,提醒住户有多少邮包在传达室尚未领取,领取完成后,该数字将自动归零。小区服务整合小区所有服务项目,如物业维修、超…

    2022年10月10日
    3
  • txt文本格式怎么转换成excel_文本格式转换为日期

    txt文本格式怎么转换成excel_文本格式转换为日期将txt文本转换为excel格式,中间使用的列分割为tab键==一、使用xlwt模块注:Excel2003一个工作表行数限制65536,列数限制256需要模块:xlwt模块安装:xl

    2022年8月5日
    6
  • xshell连接不上虚拟机的问题和解决办法_vmware远程连接服务器虚拟机

    xshell连接不上虚拟机的问题和解决办法_vmware远程连接服务器虚拟机首先按照正常步骤安装虚拟机,centos6.5文件,然后登陆Linux输入命令:vi/etc/sysconfig/network-scripts/ifcfg-eth0键入i进行编辑大致如下DEVICE=eth0TYPE=EthernetONBOOT=yesBOOTPROTO=dhcpIPADDR=192.168.175.102NETMASK=255.255.255…

    2022年9月22日
    4

发表回复

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

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