力扣-删除有序数组中的重复项-Java

26.删除有序数组中的重复项

提示

简单

3.4K

相关企业

给你一个 非严格递增排列 的数组 nums ,请你**原地** 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。

考虑 nums 的唯一元素的数量为 k ,你需要做以下事情确保你的题解可以被通过:

  • 更改数组 nums ,使 nums 的前 k 个元素包含唯一元素,并按照它们最初在 nums 中出现的顺序排列。nums 的其余元素与 nums 的大小不重要。
  • 返回 k

解题思路:利用快慢指针来找出重复的元素。然后进行覆盖。

java 复制代码
public class Solution3 {
    public static void main(String[] args) {
        int []nums={0,0,1,1,1,2,2,3,3,4,423,12};
        int res = removeDuplicates(nums);
        System.out.println(res);
    }
    public static int removeDuplicates(int[] nums) {
        int slow=0;
        int fast=1;
        int count=1;//记录个数,初始化为1
        int temp=0;//临时变量,用于记录覆盖的位置
        while (fast< nums.length){
            if(nums[slow]==nums[fast]){
                nums[temp]=nums[fast];
                fast++;
            }else{
                slow=fast;
                temp++;
                count++;
            }
        }
        return count;
    }
}
相关推荐
一个有温度的技术博主3 分钟前
Redis Cluster 核心原理:哈希槽与数据路由实战
redis·算法·缓存·哈希算法
wfbcg14 分钟前
每日算法练习:LeetCode 15. 三数之和 ✅
算法·leetcode·职场和发展
2301_8227032020 分钟前
开源鸿蒙跨平台Flutter开发:跨端图形渲染引擎的类型边界与命名空间陷阱:以多维雷达图绘制中的 dart:ui 及 StrokeJoin 异常为例
算法·flutter·ui·开源·图形渲染·harmonyos·鸿蒙
y = xⁿ21 分钟前
【LeetCode Hot100】双指针:分离指针
算法·leetcode
学习永无止境@22 分钟前
Verilog中有符号数计算
图像处理·算法·fpga开发
小肝一下1 小时前
每日两道力扣,day6
数据结构·c++·算法·leetcode·双指针·hot100
ByteCraze1 小时前
大四双非春招学习记录-K 个一组反转链表
数据结构·学习·链表
奶人五毛拉人一块1 小时前
模板与vector的学习
数据结构·学习·迭代器·vector·模板
ambition202421 小时前
【算法详解】飞机降落问题:DFS剪枝解决调度问题
c语言·数据结构·c++·算法·深度优先·图搜索算法
I Promise341 小时前
C++ 基础数据结构与 STL 容器详解
开发语言·数据结构·c++