力扣之有序链表去重

删除链表中的重复元素,重复元素保留一个

p1   p2
1 -> 1 -> 2 -> 3 -> 3 -> null

p1.val == p2.val 那么删除 p2,注意 p1 此时保持不变

p1   p2
1 -> 2 -> 3 -> 3 -> null

p1.val != p2.val 那么 p1,p2 向后移动

       p1   p2
1 -> 2 -> 3 -> 3 -> null
         
              p1   p2
1 -> 2 -> 3 -> 3 -> null   

p1.val == p2.val 那么删除 p2

              p1   p2
1 -> 2 -> 3 -> null 

当 p2 == null 退出循环

 代码

public ListNode deleteDuplicates(ListNode head) {// 链表节点 < 2if (head == null || head.next == null) {return head;}// 链表节点 >= 2ListNode p1 = head;ListNode p2;while ((p2 = p1.next) != null) {if (p1.val == p2.val) {p1.next = p2.next;} else {p1 = p1.next;}}return head;
}

重复元素一个也不保留

p1 是待删除的上一个节点,每次循环对比 p2、p3 的值

  • 如果 p2 与 p3 的值重复,那么 p3 继续后移,直到找到与 p2 不重复的节点,p1 指向 p3 完成删除

  • 如果 p2 与 p3 的值不重复,p1,p2,p3 向后平移一位,继续上面的操作

  • p2 或 p3 为 null 退出循环

    • p2 为 null 的情况,比如链表为 1 1 1 null

 

p1 p2 p3
s,  1,   1, 1, 2, 3, null

p1 p2    p3
s,   1,    1, 1, 2, 3, null

p1 p2        p3
s,   1, 1, 1, 2, 3, null

p1 p3
s,   2, 3, null

p1 p2 p3
s,   2,  3, null

   p1 p2 p3
s, 2, 3, null

代码 

public ListNode deleteDuplicates(ListNode head) {if (head == null || head.next == null) {return head;}ListNode s = new ListNode(-1, head);ListNode p1 = s;ListNode p2;ListNode p3;while ((p2 = p1.next) != null && (p3 = p2.next) != null) {if (p2.val == p3.val) {while ((p3 = p3.next) != null && p3.val == p2.val) {}p1.next = p3;} else {p1 = p1.next;}}return s.next;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/869795.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Postman API测试覆盖率:全面评估指南

&#x1f4ca; Postman API测试覆盖率&#xff1a;全面评估指南 在API测试中&#xff0c;测试覆盖率是一个关键指标&#xff0c;它衡量了测试用例对代码的覆盖程度。Postman提供了多种工具和方法来评估API测试覆盖率&#xff0c;帮助开发者和测试人员确保API的质量和稳定性。本…

力扣 双指针基础

class Solution {public void moveZeroes(int[] nums) {int l 0;//慢指针但先走for (int r 0; r < nums.length; r) {//快指针&#xff0c;遍历次数if (nums[r] 0) continue;//l比r先到&#xff0c;在此处定住l&#xff0c;r继续移动int t nums[l];nums[l] nums[r];num…

关于力扣150题目——逆波兰表达式求值Java实现的三种解法

题目介绍 逆波兰表达式是一种后缀表达式&#xff0c;其运算符位于操作数之后。力扣150题目要求我们实现一个函数&#xff0c;计算给定逆波兰表达式的值。本文将介绍三种不同的Java实现方法来解决这个问题。 解法一&#xff1a;使用栈 这是最直观和常见的解法&#xff0c;使用…

33、PHP求1+2+3+...+n、php 实现不用加减乘除做加法

题目&#xff1a;PHP 求123…n 描述&#xff1a; 求123…n&#xff0c;要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句&#xff08;A?B:C&#xff09;。 <?phpfunction Sum_Solution($n) {$sum 0;$n > 0 && $sum$nSum_Sol…

防火墙基础实验配置

一&#xff0c;实验拓扑 二&#xff0c;实验需求&#xff1a; 1.DMZ区内的服务器&#xff0c;办公区仅能在办公时间内&#xff08;9&#xff1a;00 - 18&#xff1a;00&#xff09;可以访问&#xff0c;生产区的设备全天可以访问 2.生产区不允许访问互联网&#xff0c;办公区…

外贸展示型网站设计

清洁能源风能设备wordpress外贸公司模板 风能设备wordpress外贸公司模板&#xff0c;做新能源网通设备的公司网站模板。 https://www.jianzhanpress.com/?p3606 钢材wordpress外贸公司模板 金属钢材wordpress外贸公司模板&#xff0c;做金属成品贸易公司的企业网站模板。 …

高项-法律法规与规范知识点

1、招标有公开招标、邀请招标和议标等。 2、国有资金占控股或者主导地位的依法必须进行招标的项目&#xff0c;应当公开招标&#xff1b; 下列情形可以邀请招标&#xff1a; (1) 需要采用不可替代的专利或者专有技术&#xff1b; (2) 采购人依法能够自行建设、生产或者提供&…

金九银十招聘季, 自动化测试面试题分享

马上进入金九银十&#xff0c;很多小伙伴有被动跳槽的打算&#xff0c;所以更新一些相关的自动化面试题&#xff0c;希望能帮到大家。 一 怎么设计接口测试用例&#xff1f; 通常&#xff0c;设计接口测试用例需要考虑以下几个方面&#xff1a; ① 是否满足前提条件 有些接…

面试经典题

找出字符串中第一个匹配项的下标 class Solution { public:vector<int> getNextArray(string needle){int n needle.size();if(n 1){return {-1};}else if(n 2){return {-1, 0};}vector<int> res(n);res[0] -1;res[1] 0;int cnt 0;int i 2;while(i < n)…

从零开始搭建互联网医院系统:技术与案例解析

随着信息技术的飞速发展和人们对医疗服务需求的增加&#xff0c;互联网医院逐渐成为医疗服务的重要模式。本文将详细介绍从零开始搭建互联网医院系统的关键技术和具体案例&#xff0c;帮助读者理解如何构建一个高效、可靠的互联网医院系统。 一、互联网医院系统的核心技术 1…

60秒带你了解冒泡排序

排序似乎有很多种排序&#xff0c;选择、插入、快速、归并、基数排序等等&#xff0c;今天实现一种最简单的排序方式&#xff1a;冒泡排序&#xff08;Bubble Sort&#xff09;。 int[] arr {9,1,6,3,8,4}; ↓&#xff08;如何通过算法实现这个过程&#xff1f;&#xff09; …

SMU Summer 2024 Contest Round 3

A.Hcode OnlineJudge 先用欧拉筛把质数预处理出来&#xff0c;然后枚举左端点的质数&#xff0c;只需要询问右端点是不是质数并取差值的min就行了 #include<bits/stdc.h> #define endl \n #define mk make_pair #define int long long using namespace std; typedef lon…

深入解析 Laravel 策略路由:提高应用安全性与灵活性的利器

引言 Laravel 是一个功能强大的 PHP Web 应用框架&#xff0c;以其优雅和简洁的语法而受到开发者的喜爱。在 Laravel 中&#xff0c;路由是应用中非常重要的一部分&#xff0c;它负责将用户的请求映射到相应的控制器方法上。Laravel 提供了多种路由方式&#xff0c;其中策略路…

NodeJS小饰品销售管理系统-计算机毕业设计源码21597

摘 要 在当今的数字化时代&#xff0c;电子商务已经成为了商业领域中不可或缺的一部分。随着消费者对于购物体验的要求越来越高&#xff0c;一个高效、便捷、用户友好的小饰品销售管理系统显得尤为重要。 本系统旨在利用 JavaScript 技术&#xff0c;设计并实现一个功能强大的小…

conda篇----在已有conda环境的基础上升级python包

conda篇----在已有conda环境的基础上升级python包 原先的python版本 第一步&#xff1a; conda update --all(py11) [xxxaivrs01 xxx]$ conda update --all Collecting package metadata (current_repodata.json): done Solving environment: done> WARNING: A newer vers…

如何高效学习(二)

二、如何练就超强学习能力&#xff1f;为什么有的人学的又快又好&#xff1f;高效学习的底层逻辑在这&#xff01; 说实话看到这个标题我感觉我捡到宝了&#xff0c;这不就是我一直在找寻的吗 这一节视频他分了三部分&#xff0c;分别是取势篇、明道篇、优术篇还有每次都有的&q…

【读点论文】ASAM: Boosting Segment Anything Model with Adversarial Tuning,对抗学习提升性能

ASAM: Boosting Segment Anything Model with Adversarial Tuning Abstract 在不断发展的计算机视觉领域&#xff0c;基础模型已成为关键工具&#xff0c;对各种任务表现出卓越的适应性。其中&#xff0c;Meta AI 的 Segment Anything Model (SAM) 在图像分割方面表现突出。然…

C语言 输出图案

输出以下图案: * * * * * * * * * * * * * * * * * * * * * * * * * #include <stdio.h>int main() {int n 5;for (int i 0; i < n; i) {for (int j 0; j < i; j) {printf(" ");}for (int k 0; k < n; k) {printf("* ");}pr…

首批!蚂蚁数科通过中国信通院面向大模型的可信执行环境产品专项测试

2024年6月17日&#xff0c;在中国信息通信研究院&#xff08;以下简称“信通院”&#xff09;组织的首批“面向大模型的增强型可信执行环境基础能力专项测试”中&#xff0c;蚂蚁数科摩斯顺利完成全部测试内容&#xff0c;成为首批完成此项测试的组织。 标准及测试介绍 《面向…

全局唯一id

问题引出&#xff1a; 由于数据库的自增的id很有规律&#xff0c;会让人猜到后续id 由于一个单表存储的数量有限&#xff0c;那么就会用多个表存储&#xff0c;每个表的id都是自增&#xff0c;这样导致id不唯一的情况。 引进新的方法&#xff1a; 具体解决方法&#xff1a;使用…