首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
删除有序链表中重复的元素-II
[编程题]删除有序链表中重复的元素-II
热度指数:193212
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 256M,其他语言512M
算法知识视频讲解
给出一个升序排序的链表,删除链表中的所有重复出现的元素,只保留原链表中只出现一次的元素。
例如:
给出的链表为
, 返回
.
给出的链表为
, 返回
.
数据范围:链表长度
,链表中的值满足
要求:空间复杂度
,时间复杂度
进阶:空间复杂度
,时间复杂度
示例1
输入
{1,2,2}
输出
{1}
示例2
输入
{}
输出
{}
说明:本题目包含复杂数据结构ListNode,
点此查看相关信息
马上挑战
算法知识视频讲解
提交运行
算法知识视频讲解
添加笔记
求解答(9)
邀请回答
收藏(1261)
分享
提交结果有问题?
385个回答
368篇题解
开通博客
牛客题解官
发表于 2022-04-22 11:37:29
精华题解
题目的主要信息: 在一个非降序的链表中,存在重复的节点,删除该链表中重复的节点 重复的节点一个元素也不保留 举一反三: 学习完本题的思路你可以解决如下题目: BM15.删除有序链表中重复的元素-I 方法一:直接比较删除(推荐使用) 思路: 这是一个升序链表,重复的节点都连在一起,我们就可以很轻易
展开全文
牛一霸
发表于 2021-07-09 21:05:10
精华题解
题目:删除有序链表中重复的元素 描述:给出一个升序排序的链表,删除链表中的所有重复出现的元素,只保留原链表中只出现一次的元素。 例如:给出的链表为1→2→3→3→4→4→5,返回1→2→5。 给出的链表为1→1→1→2→3,返回2→3。 示例1:输入:{1,2,2},返回值:{1}
展开全文
冰箱的主人LR
发表于 2021-07-06 23:11:07
精华题解
牛客NC24#删除有序链表中重复的元素-II# 题目链接 描述 给出一个升序排序的链表,删除链表中的所有重复出现的元素,只保留原链表中只出现一次的元素。例如:给出的链表为1→2→3→3→4→4→5, 返回1→2→5.给出的链表为1→1→1→2→3, 返回2→3. 题目很简单,因为给的是升序链表相同的
展开全文
鸠摩罗什
发表于 2021-07-11 13:53:49
精华题解
描述 给出一个升序排序的链表,删除链表中的所有重复出现的元素,只保留原链表中只出现一次的元素。例如:给出的链表为1→2→3→3→4→4→5, 返回1→2→5.给出的链表为1→1→1→2→3, 返回2→3.示
展开全文
大菠萝侦探
发表于 2021-07-10 00:49:50
精华题解
描述 给出一个升序排序的链表,删除链表中的所有重复出现的元素,只保留原链表中只出现一次的元素。首先提出这个题比较不严谨的地方,代码中一开始给出的注释中,结构体的定义是不严谨的,虽然注释中定义的结构体是下面的样子 /** * struct ListNode { * int val; *
展开全文
蒙牛麦片
发表于 2021-07-16 17:29:47
精华题解
NC24 删除有序链表中重复的元素-II 题意分析: 给一个有序的链表,删除其中出现的重复元素 示例:链表1→2→3→3→4→4→5, 删除重复元素后,变为1→2→5。解释:在原有链表中,3和4出现了多次,因此把所有的3,4都删除,最后返回了1→2→5。 题解一(遍历): 在NC25中,我们删除了重
展开全文
下一次什么时候可以修改昵称
发表于 2020-10-20 10:20:00
算法 1.设置伪结点,方便处理 2.双指针prev和curr 3.当遇到当前节点值和下一节点值相等的节点时,进行while循环找到下一个不相等的节点,挂到prev节点上 4.当遇到当前节点值和下一节点值不相等的节点时,prev和curr都移动到下一个节点接着遍历就行 public ListNo
展开全文
OfferCall!
发表于 2021-03-27 20:45:54
先定义一个头节点用于指示链表的头部位置,方便最后返回链表。然后定义两个指针p和q,初始化时,p先指向头结点,q指向head,开始遍历链表,因为链表是有序的,所以重复元素一定是连续出现的,所以我的策略就是先找出重复的一段子链表,然后一网打尽,具体做法就是: 如果q.next.val != q.v
展开全文
子夜降晴空
发表于 2021-03-25 20:45:47
class Solution { public: ListNode* deleteDuplicates(ListNode* head) { ListNode* res = new ListNode(0); //省去判断链表头重复的情况 res->next
展开全文
牛客449560839号
发表于 2021-08-20 21:57:25
/** * 设置一个首节点,遍历扫描,并设置 * pre,cur,next三个指针 * * @param head * @return */ public static ListNode deleteDuplicates(ListN
展开全文
牛客82035003号
发表于 2022-09-08 22:25:12
1.首先加上一个空的头结点,便于处理删除第一个结点的情况。 2.需要设一个pre指针跟踪工作结点及记录一路留下来的结点。 3.用2个指针p,q来比较结点值是否相同。 4.不同时,pre指向p,p指向q,q指向q->next。 5.相同时,继续看q的后面是否还有一样,直到
展开全文
夏了南城
发表于 2020-08-23 15:48:12
/** * struct ListNode { * int val; * struct ListNode *next; * }; */ class Solution { public: /** * * @param head ListNode类
展开全文
讲道理的豹子说这不是bug
发表于 2023-07-02 22:14:25
方法一:双指针求解1、设置一个指针cur指向表头(为了解决表头就是重复元素的情况);2、若cur->next与cur->next->next是重复元素,将cur->next向后移动直到指向不等于该元素的结点。时间复杂度:o(n)空间复杂度:o(1) class Solutio
展开全文
七月牧夫
发表于 2022-03-06 16:22:29
import . "nc_tools" func deleteDuplicates( head *ListNode ) *ListNode { if head == nil { return nil } ret := &ListNode{Next: h
展开全文
190409杨冬斌
发表于 2021-02-08 14:28:30
import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * } */ public class Solution { /** * * @
展开全文
Fadeways
发表于 2021-10-07 23:20:18
/* * function ListNode(x){ * this.val = x; * this.next = null; * } */ /** * * @param head ListNode类 * @return ListNode类 */ functio
展开全文
问题信息
链表
难度:
385条回答
1261收藏
26293浏览
热门推荐
通过挑战的用户
查看代码
随机昵称都有什...
2023-02-17 15:00:23
HULiu
2022-11-23 18:33:38
ERICZHO
2022-10-10 18:07:32
牛客11456...
2022-09-20 14:48:28
honeedle
2022-09-19 13:26:26
相关试题
编程题 ,按照要求创建Java 应...
Java
评论
(1)
3.1996至2003年间,从事高...
资料分析
言语理解与表达
资料分析
评论
(1)
电路板布线的时候尽量采用( )折线布线
PCB
评论
(1)
市场与销售的区别在哪里?
市场营销
评论
(1)
说出3个获取用户需求的方法并简述其...
用户研究
评论
(1)
删除有序链表中重复的元素-II
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题
import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * public ListNode(int val) { * this.val = val; * } * } */ public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @return ListNode类 */ public ListNode deleteDuplicates (ListNode head) { // write code here } }
/** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : val(x), next(nullptr) {} * }; */ class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @return ListNode类 */ ListNode* deleteDuplicates(ListNode* head) { // write code here } };
#coding:utf-8 # class ListNode: # def __init__(self, x): # self.val = x # self.next = None # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param head ListNode类 # @return ListNode类 # class Solution: def deleteDuplicates(self , head ): # write code here
using System; using System.Collections.Generic; /* public class ListNode { public int val; public ListNode next; public ListNode (int x) { val = x; } } */ class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @return ListNode类 */ public ListNode deleteDuplicates (ListNode head) { // write code here } }
/* * function ListNode(x){ * this.val = x; * this.next = null; * } */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @return ListNode类 */ function deleteDuplicates( head ) { // write code here } module.exports = { deleteDuplicates : deleteDuplicates };
val = $x; } }*/ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @return ListNode类 */ function deleteDuplicates( $head ) { // write code here }
# class ListNode: # def __init__(self, x): # self.val = x # self.next = None # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param head ListNode类 # @return ListNode类 # class Solution: def deleteDuplicates(self , head: ListNode) -> ListNode: # write code here
package main import "fmt" import . "nc_tools" /* * type ListNode struct{ * Val int * Next *ListNode * } */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @return ListNode类 */ func deleteDuplicates( head *ListNode ) *ListNode { // write code here }
/** * struct ListNode { * int val; * struct ListNode *next; * }; */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @return ListNode类 */ struct ListNode* deleteDuplicates(struct ListNode* head ) { // write code here }
# class ListNode # attr_accessor :val, :next # # def initialize(val = 0, _next = nil) # @val, @next = val, _next # end # end # # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param head ListNode类 # @return ListNode类 # class Solution def deleteDuplicates(head) # write code here end end
/** * class ListNode(var val: Int) { * var next: ListNode = null * } */ object Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @return ListNode类 */ def deleteDuplicates(head: ListNode): ListNode = { // write code here } }
/** * class ListNode(var `val`: Int) { * var next: ListNode? = null * } */ object Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @return ListNode类 */ fun deleteDuplicates(head: ListNode?): ListNode? { // write code here } }
import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * public ListNode(int val) { * this.val = val; * } * } */ public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @return ListNode类 */ public ListNode deleteDuplicates (ListNode head) { // write code here } }
/*class ListNode { * val: number * next: ListNode | null * constructor(val?: number, next?: ListNode | null) { * this.val = (val===undefined ? 0 : val) * this.next = (next===undefined ? null : next) * } * } */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @return ListNode类 */ export function deleteDuplicates(head: ListNode): ListNode { // write code here }
/** * public class ListNode { * public var val: Int * public var next: ListNode? * public init(_ val: Int = 0, _ next: ListNode? = nil) { * self.val = val * self.next = next * } * } */ public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @return ListNode类 */ func deleteDuplicates ( _ head: ListNode?) -> ListNode? { // write code here } }
/** * #[derive(PartialEq, Eq, Debug, Clone)] * pub struct ListNode { * pub val: i32, * pub next: Option
> * } * * impl ListNode { * #[inline] * fn new(val: i32) -> Self { * ListNode { * val: val, * next: None, * } * } * } */ struct Solution{ } impl Solution { fn new() -> Self { Solution{} } /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @return ListNode类 */ pub fn deleteDuplicates(&self, head: Option
>) -> Option
> { // write code here } }
{1,2,2}
{1}
{}
{}