删除链表中重复的结点
【摘要】 大家好,我是bug郭,一名双非科班的在校大学生。对C/JAVA、数据结构、Spring系列框架、Linux及MySql、算法等领域感兴趣,喜欢将所学知识写成博客记录下来。 希望该文章对你有所帮助!如果有错误请大佬们指正!共同学习交流作者简介:CSDN java领域新星创作者blog.csdn.net/bug…掘金LV3用户 juejin.cn/user/bug…阿里云社区专家博主,星级博主,...
大家好,我是bug郭,一名双非科班的在校大学生。对C/JAVA、数据结构、Spring系列框架、Linux及MySql、算法等领域感兴趣,喜欢将所学知识写成博客记录下来。 希望该文章对你有所帮助!如果有错误请大佬们指正!共同学习交流
作者简介:
- CSDN java领域新星创作者blog.csdn.net/bug…
- 掘金LV3用户 juejin.cn/user/bug…
- 阿里云社区专家博主,星级博主,developer.aliyun.com/bug…
- 华为云云享专家 bbs.huaweicloud.com/bug…
删除链表中重复的结点
题目链接:删除链表中重复的结点
题目分析:
- 这里要求时间复杂度和空间复杂度都是
O(n)
,所以这里的方法有很多! - 可以借助其他数据结构进行去重,然后再次进行链接,返回头结点即可!
- 我们这里通过指针进行遍历原地去重,因为这里结点有序!
java
public class Solution {
public ListNode deleteDuplication(ListNode pHead) {
if(pHead==null||pHead.next==null) return null;
ListNode res = new ListNode(-1);
res.next = pHead;
ListNode cur = res;
while(cur.next!=null&&cur.next.next!=null){
//遇到相邻两个节点值相同直接删除!
if(cur.next.val==cur.next.next.val){
int tmp = cur.next.val;
//跳过!
while(cur.next!=null&&cur.next.val==tmp){
cur.next = cur.next.next;
}
}else{
cur = cur.next;
}
}
return res.next;
}
}
python
class Solution:
def deleteDuplication(self , pHead: ListNode) -> ListNode:
# write code here
res = ListNode(-1)
res.next = pHead
cur = res
while cur.next!=None and cur.next.next!=None:
if cur.next.val==cur.next.next.val:
#去重!
val = cur.next.val
while cur.next!=None and cur.next.val == val:
cur.next = cur.next.next
else:
cur = cur.next
return res.next
删除链表的节点
题目链接:删除链表的节点
题目分析:
- 这就是简单的删除节点!我们只需要遍历,然后找到该节点进行删除即可!
java
public ListNode deleteNode (ListNode head, int val) {
// write code here
ListNode res = new ListNode(-1);
res.next = head;
ListNode cur = res;
while(cur.next!=null){
if(cur.next.val==val){
cur.next = cur.next.next;
}else{
cur = cur.next;
}
}
return res.next;
}
python
class Solution:
def deleteNode(self , head: ListNode, val: int) -> ListNode:
# write code here
res = ListNode(-1)
res.next = head
cur = res
while cur.next:
if cur.next.val==val:
cur.next = cur.next.next
else:
cur = cur.next
return res.next
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)