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

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

相关推荐
小兔崽子去哪了1 分钟前
Java 自动化部署
java·后端
ma_king7 分钟前
入门 java 和 数据库
java·数据库·后端
后端AI实验室14 分钟前
我用Cursor开发了3个月,整理出这套提效4倍的工作流
java·ai
HelloReader36 分钟前
Wi-Fi CSI 感知技术用无线信号“看见“室内的人
算法
青青家的小灰灰39 分钟前
金三银四面试官最想听的 React 答案:虚拟 DOM、Hooks 陷阱与大型列表优化
前端·react.js·面试
颜酱3 小时前
二叉树分解问题思路解题模式
javascript·后端·算法
zone77393 小时前
001:LangChain的LCEL语法学习
人工智能·后端·面试
zone77393 小时前
001:简单 RAG 入门
后端·python·面试
前端Hardy4 小时前
告别 !important:现代 CSS 层叠控制指南,90% 的样式冲突其实不用它也能解
前端·vue.js·面试
前端Hardy4 小时前
Vue 3 性能优化的 5 个隐藏技巧,第 4 个连老手都未必知道
前端·vue.js·面试