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;
- }
- }
其实两个不同的指针就可以得到两个不同的数组,只是原数组无法复原,并且要在彼此不相互干扰的情况下,才能正确用双指针解答
-
相关阅读:
uniapp微信小程序获取屏幕宽高
React 从入门到精通——本文来自AI创作助手
【前端】JavaScript —— JS的组成与基本语法
RK3568-buildroot添加用户应用程序
C++之std::function的介绍
C++----智能指针
一张数学地图带你尽览数学分支
解答:EasyDSS视频点播时音频是否可以设置为默认开启?
Linux ALSA 之四:Tinyalsa->Alsa Driver Flow分析
毕业一周年,工作一周年,感想理解篇
-
原文地址:https://blog.csdn.net/weixin_43582743/article/details/133755763