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结构。

相关推荐
用户6757049885028 分钟前
Celery 太重了?这可能是你一直在找的 asyncio 任务队列
后端·python·消息队列
Cloud_Shy6189 分钟前
Python 数据分析基础入门:《Excel Python:飞速搞定数据分析与处理》学习笔记系列(第十一章 Python 包跟踪器 下篇)
前端·后端·python·数据分析·excel
数智工坊14 分钟前
【UniT论文阅读】:用统一物理语言打通人类与人形机器人的知识壁垒
论文阅读·人工智能·深度学习·算法·机器人
梓䈑16 分钟前
【算法题攻略】模拟
c++·算法
Evand J19 分钟前
【课题推荐与代码介绍】卡尔曼滤波器正反向估计算法原理与MATLAB实现
开发语言·算法·matlab
DFT计算杂谈22 分钟前
VASP新手入门: IVDW 色散修正参数
linux·运维·服务器·python·算法
神奇小汤圆27 分钟前
为什么Redis能称霸缓存界?揭秘其每秒10万+读写的核心技术
后端
楼田莉子32 分钟前
C++17新特性:结构化绑定/inline变量/if相关的变化
c++·后端·学习
吃着火锅x唱着歌38 分钟前
LeetCode 962.最大宽度坡
算法·leetcode·职场和发展
无限进步_1 小时前
【C++】C++11的类功能增强与STL变化
java·前端·数据结构·c++·后端·算法