首页 > 其他分享 >力扣刷题笔记-删除数组中的重复元素

力扣刷题笔记-删除数组中的重复元素

时间:2024-07-17 10:22:07浏览次数:8  
标签:移动 nums int 元素 笔记 力扣 数组 刷题 指针

纠结要不要离开杭州

删除数组中的重复元素

思想

双指针/快慢指针

  1. 只有当两个元素不相等的时候才发生复制和p指针向后移动
  2. 如果两个指针指向的元素相等,则q指针向后移动
  3. p和q不相邻的情况下才发生复制和替换,如果相邻,只是简单的q指针向后移动

p指针是慢指针,q指针是快指针,当p和q指向的元素相同的时候,q指针继续向后移动,直到元素不相等,然后将q指针指向的元素复制给p的下一个元素(之所以是下一个,q一直在向后移动,注意向后移动的前提是元素相同,那么就是覆盖掉相同的元素),同时p指针向后移动一个位置。

关键点

p和q之间应该隔一个元素,

循环

便利数组,用while循环

code

class Solution {
    public int removeDuplicates(int[] nums) {
        int p = 0;
        int q = 1;
        while(q < nums.length){
            if(nums[p] != nums[q]){
                if((q-p) > 1){
                    nums[p+1] = nums[q];
                }
                p++;
            }
            q++;
        }
        return p+1;
    }
}

p+1

p是从0开始的,所以要返回p+1才是新数组的长度

标签:移动,nums,int,元素,笔记,力扣,数组,刷题,指针
From: https://www.cnblogs.com/Jason-01011010/p/18306722

相关文章

  • 设计模式之工厂模式(学习笔记)
    定义工厂方法模式是一种创建型设计模式,它定义了一个用于创建对象的接口,但由子类来决定实例化哪一个类。工厂方法使得类的实例化延迟到子类,这样可以让客户端在不需要知道具体类的情况下创建对象。工厂方法模式通过使用继承和多态性,允许子类来控制对象的创建方式,能够更好地应对对象......
  • 开发基础笔记
    1、Springboot2.0以后默认的数据库连接池是哪个? Springboot2.0以后默认的数据库连接池是哪个SpringBoot2.0后默认的数据库连接池是HikariCP。HikariCP是一个高性能的数据库连接池,它的性能远远超过其他传统的数据库连接池,如C3P0、DBCP和Tomcat的连接池。如果......
  • 利用anki实现电子笔记与滑记手机端/平板端同步
    适用对象:希望利用anki类工具随时复习,但是手机平板端制造卡片成本较高,希望通过电脑端制作卡片并且同步至滑记1,在电脑上下载anki网址:https://apps.ankiweb.net/点击download,选择你要下载的版本2,下载完后,打开anki,并制作卡片滑记在手机平板端也可以制作卡片,但是相比于使用电脑操......
  • Java计算机毕业设计高校笔记分享系统(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在高等教育领域,随着知识量的急剧增长和学习方式的多样化,学生如何高效地整理、保存并分享学习笔记成为了一个日益凸显的问题。传统的手写笔记虽然有助......
  • 力扣第十题——正则表达式匹配(动态规划化的运用)(附思路讲解、完整代码及知识点精炼)
    题目介绍给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配。'.' 匹配任意单个字符'*' 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。 示例1:输入:s="aa",p="a"输出:false解......
  • 勾股定理学习笔记
    第一章勾股定理1.1勾股定理的证明对于勾股定理,有约\(500\)种证明方法。常见的有数格子(见课本勾股数)、赵爽弦图(两种)、加菲尔德证法(总统图)、毕达哥拉斯证法、华蘅芳证法、百牛定理证法、商高定理证法、商高证法、刘徽证法、绉元智证法等。这里只列出常见的几种方法。1.1.1......
  • 代码随想录刷题Day 14 二叉树part02
    226.翻转二叉树//这道题其实就是遍历二叉树,然后交换每个节点的左右子节点即可。这里我就使用了一个栈来存储需要遍历的节点,每次循环弹出一个,然后交换其左右子节点就好了classSolution{publicTreeNodeinvertTree(TreeNoderoot){Stack<TreeNode>stack=new......
  • 中国白酒品鉴知识培训三-品牌知识-笔记
     汾酒的起源-成立于1949年1949年6月1日,成立国营汾阳杏花酒厂(将义泉泳和晋泉公酒厂合并一处)。中华人民共和国第一个地方国营酿酒企业。1949年6月1日,成立国营汾阳杏花酒厂。 茅台的起源-成立于1951年华联辉1862年:成义烧房王炳乾1879年:荣和烧房赖永初1941年:恒兴烧房1951......
  • 中国白酒品鉴知识培训二之香型-笔记
    1浓香型工艺特点单粮,高粱,多粮,高粱,大米,糯米,小麦,玉米中偏高温大曲(小米为主制成)发酵设备 泥窖发酵周期45-90天2酱香型白酒特点原料:高粱糖化发酵剂,高温大曲(小米制成)发酵设备和形式:条石窖固态发酵发酵时间,八轮次每次一个月工艺特点,两次投粮,多轮次发酵,四高二长3清香......
  • 【学习笔记】初等数论
    [学习笔记]初等数论最大公约数\(gcd\)欧几里得算法(辗转相除法):\[\gcd(a,b)=\gcd(b,a\bmodb)\]代码:intgcd(inta,intb){returnb?gcd(b,a%b):a;}或者直接使用__gcd(a,b)。辗转相减法:\[\gcd(a,b)=\gcd(a,b-a)\]推广到\(n\)项:\[\gcd(a_1,a_2......