1、通过重新定义一个新的数组,然后将其重新赋值给nums数组,输出此时的index,该方法需要额外的内存
- class Solution {
- public int removeDuplicates(int[] nums) {
- int[] res = new int[nums.length];
- res[0] = nums[0];
- int index = 1;
- for( int i=1;i
- if(nums[i]!=nums[i-1]) {
- res[index] = nums[i];
- index++;
- }
- }
- for(int i=0;i
- nums[i] = res[i];
- }
- return index;
- }
- }
2、或者是使用双指针可以节省额外的内存空间
- class Solution {
- public int removeDuplicates(int[] nums) {
- int slow = 0;
- for(int fast=1;fast
- if(nums[fast] != nums[slow]) {
- slow++;
- nums[slow]=nums[fast];
- }
- }
- return slow+1;
- }
- }
其实两个不同的指针就可以得到两个不同的数组,只是原数组无法复原,并且要在彼此不相互干扰的情况下,才能正确用双指针解答
-
相关阅读:
代码随想录Day39-动态规划:力扣第583m、72h、647m、516m、739m题
JeecgBoot 3.4.3-Vue2 版本发布,Vue2版前端UI专项升级
[springmvc]乱码问题解决以及JSON和java对象转换的几种方法
算法竞赛入门【码蹄集进阶塔335题】(MT2271-2275)
铝型材公司【Brilliance Group】申请1080万美元纳斯达克IPO上市
C#和西门子PLC使用Udp通信
学完 Fluent 官方基础教程,你离一名合格Fluent 流体工程师还有多远?
马斯克的这波神操作,让我意识到保持写代码的能力有多重要
使用ES-Hadoop插件通过Hive查询ES中的数据
SpringBoot - SpringBoot整合Flyway实现数据库的迁移
-
原文地址:https://blog.csdn.net/weixin_43582743/article/details/133755763