首页 > 其他分享 >刷题复习(二)数组-双指针

刷题复习(二)数组-双指针

时间:2023-12-05 15:47:33浏览次数:42  
标签:slow ListNode 复习 val int fast next 刷题 指针

刷题复习(二)数组-双指针

https://labuladong.gitee.io/algo/di-ling-zh-bfe1b/shuang-zhi-fa4bd/

1、删除有序数组中的重复项

慢指针用于统计不重复项,快指针用于不停前进对比是否有新的不重复项,有的话进行替换

class Solution {
    public int removeDuplicates(int[] nums) {
        int i = 0, j = i + 1;
        while (i <= nums.length - 1 && j <= nums.length - 1) {
            if (nums[i] != nums[j]) {
                i++;
                nums[i] = nums[j];
            }
            j++;
        }
        return i + 1;
    }
}

2、删除排序链表中的重复元素

和上面的数组比较类似


/**
 * Definition for singly-linked list.
 * public class ListNode {
 * int val;
 * ListNode next;
 * ListNode() {}
 * ListNode(int val) { this.val = val; }
 * ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode deleteDuplicates(ListNode head) {
        if(head == null) return head;
        ListNode fast = head;
        ListNode slow = head;
        while (fast != null) {
            if (fast.val != slow.val) {
                slow.next =fast;
                slow =slow.next;
            }
            fast = fast.next;
        }
        slow.next = null;
        return head;
    }
}
//leetcode submit region end(Prohibit modification and deletion)

标签:slow,ListNode,复习,val,int,fast,next,刷题,指针
From: https://www.cnblogs.com/wusier/p/17877406.html

相关文章

  • 学c笔记归纳 第五篇——指针(抽象点)
    概念:内存会划分一个个的内存单元,每个内存单元都有一个编号,1个内存单元的大小为:1字节(1byte),内存单元的编号就是它的地址,地址也被称为指针。存放指针(地址)的变量就是指针变量;指针的本质就是地址,地址可以用指针变量存起来;指针变量也是变量,也分全局和局部。 #include<stdio.h>......
  • [机器学习复习笔记] SVM 支持向量机
    SVM支持向量机1.SVM基本模型1.1线性可分问题给定一个训练样本集\(D=\{(x_1,y_1),(x_2,y_2),...,(x_n,y_n)\},\;y_i\in\{-1,+1\}\)。假设两个点集\(D_0\)和\(D_1\),且\(D_0\subsetD,D_1\subsetD\),若存在一个\(d\)维向量\(w\)和实数\(b\),使得......
  • C语言--深入理解指针
    C语言--深入理解指针一.指针的概念要知道指针的概念,要先了解变量在内存中是如何存储的。在存储时,内存被分为一块一块的,每一块都有一个特有的编号。而这个编号可以暂时理解为指针,就是酒店的门牌号一样。变量和地址看下面代码voidmain(){intx=10,inty=20;}代......
  • 【刷题笔记】124. Binary Tree Maximum Path Sum
    题目Givena non-empty binarytree,findthemaximumpathsum.Forthisproblem,apathisdefinedasanysequenceofnodesfromsomestartingnodetoanynodeinthetreealongtheparent-childconnections.Thepathmustcontain atleastonenode anddoes......
  • c语言实现this指针效果
    概要由于目前在做一个比较复杂的嵌入式项目,想要借此提升一下代码的结构设计能力,所以想要以面向对象的思想来完成这个项目,即把每个板载外设资源视为一个对象,采用msp+bsp的模式,对每个bsp外设实现对象化处理,现有方案需要手动传入对象引用,调用方法时比较麻烦,所以考虑简化调用方式。......
  • Leetcode刷题day5-哈希表.异位词.交集.快乐数.两数和
    242.有效的字母异位词242.有效的字母异位词-力扣(LeetCode)给定两个字符串 _s_ 和 _t_ ,编写一个函数来判断 _t_ 是否是 _s_ 的字母异位词。注意:若 _s_ 和 _t_ 中每个字符出现的次数都相同,则称 _s_ 和 _t_ 互为字母异位词。示例 1:输入:s="anagram",......
  • C++ 返回函数指针的函数
    目录0前言1FunctionPointerinC/C++type1.1ordinaryfunctionPointer1.2non-staticmemberfunctionofclass1.3LambdaToFunctionPointer1.4总结什么是指针2ReturningafunctionpointerfromafunctioninC/C++3.C-VariableArguments(Variablelengtharg......
  • const与指针的组合
    ① constint*p;//指向一个整型常量的指针,p可变,p指向的对象不可变。② intconst*p;//同上。③ int*constp;//p不可变,p指向的对象可变(const修饰的是*),常量指针。④ constint*constp;//p不可变,p指向的对象也不可变。关键点:以*为界,*号左边修饰的是p指向的对象,*号......
  • 2302. 统计得分小于 K 的子数组数目(双指针,贡献法,子数组问题)
     枚举子数组问题,常见有固定一个点,枚举另一个端点,还有枚举中间点。本题使用双指针算法,对右端点进行枚举,每次累加[l,r]区间内,所有以右端点为结尾的子数组对答案的贡献度,也就是长度r-l+1classSolution:defcountSubarrays(self,nums:List[int],k:int)->int:......
  • Leetcode刷题day4-链表.交换.删除.相交.环
    24.两两交换链表中的节点24.两两交换链表中的节点-力扣(LeetCode)给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(只能进行节点交换)。示例1:输入:head=[1,2,3,4]输出:[2,1,4,3]示例2:输入:head=[]输出:[......