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;
- }
- }
其实两个不同的指针就可以得到两个不同的数组,只是原数组无法复原,并且要在彼此不相互干扰的情况下,才能正确用双指针解答
-
相关阅读:
在ubuntu中恢复误删除的文件
基于PHP语言的会员系统搭建(Docker版)
[TOG2022]DCT-Net: Domain-Calibrated Translation for Portrait Stylization
【Maven】VSCode Java+Maven 环境配置
【vue】下拉、上拉刷新
Java代码审计之ofcms
thinkphp6 入门(4)--数据库操作 增删改查
计算机网络笔记3 数据链路层
Java学习之封装
五种多目标优化算法(MOGWO、MOJS、NSWOA、MOPSO、MOAHA)性能对比(提供MATLAB代码)
-
原文地址:https://blog.csdn.net/weixin_43582743/article/details/133755763