20190601-剑指offer18.2-AcWing-29. 删除链表中重复的节点

剑指offer75 手撕剑指offer力扣版,换汤不换药 阅读详情

剑指offer18.2-AcWing-29. 删除链表中重复的节点

在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留。
样例1
输入:1->2->3->3->4->4->5
输出:1->2->5
样例2
输入:1->1->1->2->3
输出:2->3

思路:
首先判断节点是否为空,若是空,则直接return
初始两个变量,一个指向当前节点nowNode,一个指向当前节点的前一个结点preNode。
不管循环遍历当且结点:
  若当前结点与下一个结点重复,则删除,直到重复结点全部删除
  比较巧妙的设计为用preNode是否为空,决定head结点。
  连接preNode与nowNode
C++ code:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* deleteDuplication(ListNode* head) {
        if(head == NULL){
            return head;
        }
        ListNode* preNode = NULL;
        ListNode* nowNode = head;
        while(nowNode != NULL){
            //ListNode* nextNode = nowNode->next;
            bool is_del = 0;
            if(nowNode->next != NULL && nowNode->val == nowNode->next->val){
                is_del = 1;
            }
            if(!is_del){
                preNode = nowNode;
                nowNode = nowNode->next;
            }else{
                int value = nowNode->val;
                while(nowNode != NULL && nowNode->val == value){
                    ListNode* temp = nowNode;
                    nowNode = nowNode->next;
                    delete temp;
                }
                
                if(preNode == NULL){
                    head = nowNode;
                }else{
                    preNode->next = nowNode;
                }
            }
        }
        return head;
    }
};

python code:

# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution(object):
    def deleteDuplication(self, head):
        """
        :type head: ListNode
        :rtype: ListNode
        """
        if head == None:
            return head
        
        preNode = None
        nowNode = head
        
        while nowNode != None:
            
            is_del = 0
            if nowNode.next != None and nowNode.val == nowNode.next.val:
                is_del = 1
                
            if not is_del:
                preNode = nowNode
                nowNode = nowNode.next
            else:
                value = nowNode.val
                while nowNode != None and nowNode.val == value:
                    temp = nowNode
                    nowNode = nowNode.next
                    del temp
                
                if preNode == None:
                    head = nowNode
                else:
                    preNode.next = nowNode
                    
        return head             
别再被网站识别成机器人了!用Python的undetected_chromedriver+Selenium实现无痕自动化 本文详细介绍了如何利用Python的undetected_chromedriver和Selenium实现无痕自动化,突破现代网站的反爬系统。通过修正浏览器指纹、模拟人类操作行为,并结合实战案例,帮助开发者构建难以被识别的自动化脚本,适用于电商监控等场景。 阅读详情

相关推荐

IMU、INS、GNSS与组合导航:从原理到工程实践全解析

在自动驾驶、无人机和机器人等智能系统的定位方案中,IMU、INS、GNSS和组合导航常被混为一谈,但它们在硬件层级、数据特性和误差机制上截然不同。IMU作为惯性测量单元,以百赫兹以上频率输出加速度和角速度;INS基于IMU完成姿态、速度与位置的递推解算,却因积分累积误差而随时间漂移;GNSS提供绝对位置,但易受遮挡和干扰。组合导航通过卡尔曼滤波将两者融合,实现短期不飘、长期不偏的连续定位,这正是高精度导航系统的技术底座。工程落地时,从IMU标定、Allan方差分析到相机/LiDAR与IMU外参标定,再到松耦

weixin_29193259的博客 381

剑指offer18.删除链表中重复的节点(全部删掉)

1.题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留。 样例1 输入:1->2->3->3->4->4->5 输出:1->2->5 样例2 输入:1->1->1->2->3 输出:2->3 2.解题思路 因为可能会把头节点删掉,所以要插入一个虚拟头节点...

没有感情的刷题机器 230

电荷灵敏前置放大器噪声优化策略:从理论到实践

本文深入探讨了电荷灵敏前置放大器的噪声优化策略,从理论分析到实践应用。文章系统解析了并联电流噪声与串联电压噪声的来源,并引入噪声等效原理与“冷电容”模型作为统一分析工具。通过详解a、b、c三类噪声的频谱特性,为实战优化提供了清晰指导。核心策略包括选用高跨导、低漏电流FET,优化静态工作点,采用共源-共基结构,精心设计反馈网络,以及实施严格的PCB布局、屏蔽与接地,旨在全面提升微弱信号检测系统的信噪比。

weixin_29292431的博客 467

剑指offer

目录AcWing 13. 找出数组中重复的数字AcWing 14. 不修改数组找出重复的数字AcWing 15. 二维数组中的查找 AcWing 13. 找出数组中重复的数字 class Solution { public: int duplicateInArray(vector<int>& nums) { int n = nums.size(); for (auto x : nums) //首先遍历数组,如果存在某个数不在0到n-

HENRYyangtuo的博客 320

FineReport实战-- 国内外各地区销售数据分析 多个图表联动

进行国内外各地区业务员销售数据分析是一项复杂但极具价值的任务,它可以帮助企业了解不同市场的表现,并据此调整销售策略以提高整体绩效。实现功能:同一个报表里面多个图表联动问题。

Davina_yu的博客 1200

踩坑2周总结:Python+YOLO26搭建工业级多路视频分析应用,从单路卡顿到16路4K稳跑30FPS

本文分享了工业级多路视频分析系统的实战经验,针对智慧物流园区的车辆违停和人员安全监测需求,提出了一套完整的解决方案。作者通过踩坑实践,总结出多路视频分析的四大核心痛点:视频流解码瓶颈、推理调度混乱、内存占用爆炸和部署兼容性差。 文章详细介绍了技术选型方案,推荐使用FFmpeg+PyAV进行硬件加速解码、YOLO26+TensorRT INT8量化推理、单进程多线程的生产者-消费者架构,以及内存池复用等技术组合。该方案在RTX 4070 Ti上实现了16路4K视频30FPS稳定运行,GPU利用率达85%以上,

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 955

《剑指offer》刷题总结

从三月初开始刷剑指offer上面的题,到现在花了近二十天的时间终于刷完了。应该说,掌握上面的技巧应付一些公司面试题和小公司的笔试题是完全没有问题的。之前参加一个公司笔试,算法题就有一题是剑指offer上二维数组查找的那题(AcWing15),较为简单,但是应付大公司的笔试可能还远远不够。剑指offer的76道题目的题解链接是《剑指offer》题解。(下面题号较多便不附上各题的链接了) 下面简单总...

昂昂累世士的博客 1654

Cadence OrCAD Capture软件启动过程卡死且无法恢复的解决方法

如下图所示Cadence OrCAD Capture软件在启动后出现卡死的现象,且等待后无法自动恢复,需要强行关闭,再次启动依然卡死。

fydar的博客 4044

剑指offer第二周(Acwing打卡)

第二周数学推导和算法(必看)分数求导 (U/V)'=(U'V-UV')/(V^2) #24 机器人的运动范围 #25剪绳子(完全不会做,有个数学推导) 给你一根长度为 n 绳子,请把绳子剪成 m 段(m、n 都是整数,2≤n≤58 并且 m≥2)。 每段的绳子的长度记为 k[1]、k[2]、……、k[m]。 k[1]k[2]…k[m] 可能的最大乘积是多少? 例如当绳子的长度是 8 时,我们把它剪成长度分别为 2、3、3 的三段,此时得到最大的乘积 18。 样例 输入:8 输出:18 数学推导和算法(必看)

骑着乌云看雪 1074

HighTec安装使用

HighTec安装使用

qq_43552564的博客 3835

基于STM32设计的智能家居系统(采用ESP8266+OneNet云平台)

一、环境介绍 单片机采用:STM32F103C8T6 上网方式:采用ESP8266,也可以使用其他设备代替,只要支持TCP协议即可。比如:GSM模块、有线网卡等。 云平台: 采用中国移动OneNet. 也可以采用腾讯、阿里云、华为云、百度天工物接入、机智云等等。 前面文章有讲解。 协议: 采用MQTT协议 开发软件:keil5 完整项目源码下载:https://download.csdn.net/download/xiaolong1126626497/19766925 二、包含的硬件与实...

1万+

剑指offer38 数字排列

剑指offer38-AcWing-51. 数字排列 输入一组数字(可能包含重复数字),输出其所有的排列方式。 样例 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 思路: C++ code: class Solution { public: ...

WangXu__的博客 549

OpenCV实战之人脸美颜美型(八)——大眼(上)

从大众审美的角度来看,眼睛适当的“变大”会让人显得更加年轻。因此美型中就有一项大眼功能,其效果就是让眼睛适当变大,这章内容就围绕着大眼算法展开。

On my way 1211

Leetcode-235. 二叉搜索树的最近公共祖先

Leetcode-235. 二叉搜索树的最近公共祖先 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,...

WangXu__的博客 526

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

剑指offer33 二叉搜索树的后序遍历序列

剑指offer33-AcWing-46. 二叉搜索树的后序遍历序列 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。 如果是则返回true,否则返回false。 假设输入的数组的任意两个数字都互不相同。 样例 输入:[4, 8, 6, 12, 16, 14, 10] 输出:true 思路:     二叉搜索树的后序遍历,最后一个结点为头节...

WangXu__的博客 423

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

剑指offer53.1 数字在排序数组中出现的次数

剑指offer53.1-AcWing-67. 数字在排序数组中出现的次数 统计一个数字在排序数组中出现的次数。 例如输入排序数组[1, 2, 3, 3, 3, 3, 4, 5]和数字3,由于3在这个数组中出现了4次,因此输出4。 样例 输入:[1, 2, 3, 3, 3, 3, 4, 5] , 3 输出:4 思路:     用二分查找的方法,先查找k所在...

WangXu__的博客 381

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

20190630-剑指offer60-AcWing-80. 骰子的点数

剑指offer60-AcWing-80. 骰子的点数 将一个骰子投掷n次,获得的总点数为s,s的可能范围为n~6n。 掷出某一点数,可能有多种掷法,例如投掷2次,掷出3点,共有[1,2],[2,1]两种掷法。 请求出投掷n次,掷出n~6n点分别有多少种掷法。 样例1 输入:n=1 输出:[1, 1, 1, 1, 1, 1] 解释:投掷1次,可能出现的点数为1-6,共计6种。每种点数都只有1种掷...

WangXu__的博客 345

剑指offer40 最小的k个数

剑指offer40-AcWing-53. 最小的k个数 输入n个整数,找出其中最小的k个数。 注意: 数据保证k一定小于等于输入数组的长度; 输出数组内元素请按从小到大顺序排序; 样例 输入:[1,2,3,4,5,6,7,8] , k=4 输出:[1,2,3,4] 思路:     用大顶堆保存k个数,然后不断的遍历数组,若是数组中的数小于堆顶元素,则替换。实...

WangXu__的博客 298

20190630-剑指offer63-AcWing-83. 股票的最大利润

剑指offer63-AcWing-83. 股票的最大利润 假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖 一次 该股票可能获得的利润是多少? 例如一只股票在某些时间节点的价格为[9, 11, 8, 5, 7, 12, 16, 14]。 如果我们能在价格为5的时候买入并在价格为16时卖出,则能收获最大的利润11。 样例 输入:[9, 11, 8, 5, 7, 12, 16, 14] 输出:...

WangXu__的博客 285

剑指offer15 二进制中1的个数

剑指offer15-AcWing-26.二进制中1的个数 输入一个32位整数,输出该数二进制表示中1的个数。 注意: 负数在计算机中用其绝对值的补码来表示。 样例1 输入:9 输出:2 解释:9的二进制表示是1001,一共有2个1。 样例2 输入:-2 输出:31 解释:-2在计算机里会被表示成11111111111111111111111111111110,一共有31个1。 思路1: &nbsp...

WangXu__的博客 280

20190627-剑指offer50.2-AcWing-64. 字符流中第一个只出现一次的字符

剑指offer50.2-AcWing-64. 字符流中第一个只出现一次的字符 请实现一个函数用来找出字符流中第一个只出现一次的字符。 例如,当从字符流中只读出前两个字符”go”时,第一个只出现一次的字符是’g’。 当从该字符流中读出前六个字符”google”时,第一个只出现一次的字符是’l’。 如果当前字符流没有存在出现一次的字符,返回#字符。 样例 输入:"google" 输出:"ggg#ll"...

WangXu__的博客 279

20190511-剑指offer3-AcWing-14.不修改数组找出重复的数字

剑指offer2-AcWing-14.不修改数组找出重复的数字 给定一个长度为 n+1 的数组nums,数组中所有的数均在 1∼n 的范围内,其中 n≥1。 请找出数组中任意一个重复的数,但不能修改输入的数组。 样例 给定 nums = [2, 3, 5, 4, 3, 2, 6, 7]。 返回 2 或 3。 思考题:如果只能使用 O(1) 的额外空间,该怎么做呢? 思路: 1.题目中有重要的信息就...

WangXu__的博客 270

剑指offer10 斐波那契数列

剑指offer9-AcWing-21. 斐波那契数列 输入一个整数 n ,求斐波那契数列的第 n 项。 假定从0开始,第0项为0。(n<=39) 样例 输入整数 n=5 返回 5 思路1:     递归的方法,重要的是写明确递归结束的条件,C++代码可以正常通过,python代码溢出 C++代码: class Solution { public: ...

WangXu__的博客 268

20190601-剑指offer18.1-AcWing-28. 在O(1)时间删除链表结点

剑指offer18-AcWing-28. 在O(1)时间删除链表结点 给定单向链表的一个节点指针,定义一个函数在O(1)时间删除该结点。 假设链表一定存在,并且该节点一定不是尾节点。 样例 输入:链表 1->4->6->8 删掉节点:第2个节点即6(头节点为第0个节点) 输出:新链表 1->4->8 思路:     先复制后一个...

WangXu__的博客 263

剑指offer58.2 左旋转字符串

剑指offer58.2-AcWing-78. 左旋转字符串 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。 请定义一个函数实现字符串左旋转操作的功能。 比如输入字符串"abcdefg"和数字2,该函数将返回左旋转2位得到的结果"cdefgab"。 注意: 数据保证n小于等于输入字符串的长度。 样例 输入:"abcdefg" , n=2 输出:"cdefgab" 思路1: &nb...

WangXu__的博客 263

剑指offer58.1 翻转单词顺序

剑指offer58.1-AcWing-77. 翻转单词顺序 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。 为简单起见,标点符号和普通字母一样处理。 例如输入字符串"I am a student.",则输出"student. a am I"。 样例 输入:"I am a student." 输出:"student. a am I" 思路:    &...

WangXu__的博客 259
上一篇: 20190601-剑指offer18.1-AcWing-28. 在O(1)时间删除链表结点
下一篇: 20190601-剑指offer19-AcWing-30. 正则表达式匹配
WangXu__
博客等级 码龄9年 3粉丝 156原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值