面试经典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;
}

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

相关推荐
mit6.8243 分钟前
[Vroom] 位置与矩阵 | 路由集成 | 抽象,解耦与通信
c++·人工智能·算法
TeamDev5 分钟前
从 JavaFX WebView 迁移至 JxBrowser
java·后端·webview
麦兜*5 分钟前
【SpringBoot 】Spring Boot OAuth2 六大安全隐患深度分析报告,包含渗透测试复现、漏洞原理、风险等级及完整修复方案
java·jvm·spring boot·后端·spring·系统架构
用户40315986396638 分钟前
在工作中学算法——专线配置
java·算法
用户403159863966311 分钟前
在工作中学算法——基于日志的系统故障预测
java·算法
এ᭄画画的北北13 分钟前
力扣-240.搜索二维矩阵 II
算法·leetcode·矩阵
Tina_晴20 分钟前
【基础篇】Promise初体验+案例分析(上)
前端·javascript·面试
浩瀚星辰202421 分钟前
C++树状数组详解
java·数据结构·算法
雲墨款哥35 分钟前
Vue 3 响应式黑魔法:ITERATE_KEY 如何解决新增属性的响应性难题
vue.js·面试
JJ1M843 分钟前
前缀和+贪心总结,基于每日一题力扣3439、3440
python·算法·leetcode