LeetCode第26题删除有序数组中的重复项

继续打卡算法题,今天学习的是LeetCode的第26题删除有序数组中的重复项,这道题目是道简单题。算法题的一些解题思路和技巧真的非常巧妙,每天看一看算法题和解题思路,我相信对我们的编码思维和编码能力有一些帮助。

分析一波题目

哈哈,这个题目还是比较简单的,我们有两种方法可以巧妙的去除重复项

第一种是使用一个map记录出现过的数字,如果没有出现过就不断的填充原数组。

第二种是通过双指针,也是快慢指针。慢指针记录不重复的数据下标,快指针用来循环整个数组。

编码解决

java 复制代码
class Solution {
    public int removeDuplicates(int[] nums) {
        if(nums.length == 0) {
            return 0;
        }

        int slow= 1;
        int fast = 1;
        while(fast<nums.length) {
          int a=  nums[fast];
          int b = nums[fast-1];
          //比较紧挨着的两个数是否相同,不相同需要记录下来
          if(a != b) {
            nums[slow++] = a;
          }
          fast++;
        }
        return slow;
    }
}

总结

这道题目用双指针的效率更高,如果没怎么使用双指针解题,一开始只能想到使用map结构。

相关推荐
子兮曰4 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰4 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
倒头就睡的小比特4 天前
算法竞赛C++常用的STL
c++·算法
小羊没烦恼!4 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
爱勇宝4 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
胡写代码4 天前
别再前后端各写一套表单校验了
java·后端
大勇前进4 天前
原生 PHP 还是 Laravel?小项目到底要不要上框架
后端
猎头南楼4 天前
知识社区推荐系统实践:新用户冷启动与长短期兴趣建模的挑战 资深推荐算法工程师
人工智能·深度学习·算法·机器学习
yuzhi_liu4 天前
我用 LangGraph4j 实现 Multi-Agent Supervisor
后端
alsmile4 天前
Node-RED 之外,国产规则引擎的新方案:基于标准语法,Go 先行实现
后端·开源·go