本篇内容主要讲解“leetcode如何分隔链表”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“leetcode如何分隔链表”吧!
给你一个链表和一个特定值 x ,请你对链表进行分隔,使得所有小于 x 的节点都出现在大于或等于 x 的节点之前。
你应当保留两个分区中每个节点的初始相对位置。
示例:
输入:head = 1->4->3->2->5->2, x = 3
输出:1->2->2->4->3->5
创建两个链表,一个存放小于x的,一个存放大于x的,顺序不动,最后将两个链表进行拼接即可。
# Definition for singly-linked list.
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
def __repr__(self):
return str(self.val)
class Solution:
def partition(self, head: ListNode, x: int) -> ListNode:
if not head:
return head
head1 = ListNode(0)
head2 = ListNode(0)
cur1 = head1
cur2 = head2
while head:
if head.val < x:
cur1.next = head
head = head.next
cur1 = cur1.next
cur1.next = None
else:
cur2.next = head
head = head.next
cur2 = cur2.next
cur2.next = None
cur1.next = head2.next
return head1.next
if __name__ == '__main__':
s = Solution()
head_list = [1, 4, 3, 2, 5, 2]
head = ListNode(head_list[0])
cur = head
for i in range(1, len(head_list)):
cur.next = ListNode(head_list[i])
cur = cur.next
x = 3
ans = s.partition(head, x)
print(ans)
到此,相信大家对“leetcode如何分隔链表”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://my.oschina.net/nickhuang1996/blog/4877694