面试经典150题——删除有序数组中的重复项

面试经典150题 day3

题目来源

力扣每日一题;题序:26

我的题解

方法一 双指针

使用两个指针分别指向相同元素的左右边界,再利用一个count记录最终需要的数组长度。
时间复杂度 :O(n)
空间复杂度:O(1)

java 复制代码
public int removeDuplicates(int[] nums) {
    int left=0,right=1;
    int n=nums.length;
    if(n==1)
        return n;
    int count=0;
    while(right<n){
    	//找到相同元素的左右边界
        while(right<n&&nums[left]==nums[right])
            right++;
        //当前相同元素记录如最终的数组
        count++;
        left=right;
        right++;
        //只有left小于n时才会更新结果数组
        if(left<n)
            nums[count]=nums[left];
    }
    if(left<n)
        count++;
    return count;
}

有任何问题,欢迎评论区交流,欢迎评论区提供其它解题思路(代码),也可以点个赞支持一下作者哈😄~

相关推荐
এ᭄画画的北北10 分钟前
力扣-1.两数之和
数据结构·算法·leetcode
22:30Plane-Moon16 分钟前
初识SpringBoot
java·spring boot·后端
shenghaide_jiahu36 分钟前
数学建模——递归和动态规划
算法·数学建模·动态规划
黄昏晓x1 小时前
数据结构----排序
java·数据结构·排序算法
97zz1 小时前
项目配置文件正确但是启动失败,报配置文件内容错误或中间件地址与实际不符
java·中间件·springboot
凯子坚持 c1 小时前
动态规划专题:详解二维费用背包问题——以“一和零”与“盈利计划”为例
算法·动态规划
黑色的山岗在沉睡1 小时前
P1948 [USACO08JAN] Telephone Lines S
数据结构·c++·算法·图论
拾光拾趣录2 小时前
H5适配9大高频题连环炸!第3问90%人翻车?
前端·面试
快去睡觉~2 小时前
力扣301:删除无效的括号
数据结构·算法·leetcode
小醉你真好2 小时前
Spring Boot + ShardingSphere 分库分表实战
java·spring boot·后端·mysql