本篇内容主要讲解“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如何分隔链表”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。