25. K 个一组翻转链表
python">
from queue import PriorityQueue
class Solution:def mergeKLists(self, lists: List[Optional[ListNode]]) -> Optional[ListNode]:nums = []for l in lists:while l:nums.append(l.val)l = l.nextnums.sort()cur = head = ListNode(0)for i in nums:cur.next = ListNode(val=i)cur= cur.nextreturn head.next
5. 最长回文子串
33. 搜索旋转排序数组
200. 岛屿数量
92. 反转链表 II
python">
class Solution:def mergeTwoLists(self, list1: Optional[ListNode], list2: Optional[ListNode]) -> Optional[ListNode]:head=ListNode(0)current=headwhile list1 and list2:if list1.val>=list2.val:current.next=list2list2=list2.nextelse:current.next=list1list1=list1.nextcurrent=current.nextcurrent.next= list1 if list1 else list2return head.next
23. 合并K个排序链表
python">
from queue import PriorityQueue
class Solution:def mergeKLists(self, lists: List[Optional[ListNode]]) -> Optional[ListNode]:nums = []for l in lists:while l:nums.append(l.val)l = l.nextnums.sort()cur = head = ListNode(0)for i in nums:cur.next = ListNode(val=i)cur= cur.nextreturn head.next
143. 重排链表
python">class Solution(object):def reorderList(self, head):""":type head: ListNode:rtype: None Do not return anything, modify head in-place instead."""if not head or not head.next: return headfast = headpre_mid = headwhile fast.next and fast.next.next:pre_mid = pre_mid.nextfast = fast.next.nextpre = Nonecur = pre_mid.nextwhile cur:tmp = cur.nextcur.next = prepre = curcur = tmppre_mid.next = prep1 = headp2 = pre_mid.nextwhile p1 != pre_mid:pre_mid.next = p2.nextp2.next = p1.nextp1.next = p2p1 = p2.nextp2 = pre_mid.next
124. 二叉树中的最大路径和
python">
class Solution:def maxPathSum(self, root: Optional[TreeNode]) -> int:self.ans = float("-inf")def maxGain(r):if not r:return 0 left = max(maxGain(r.left), 0) right = max(maxGain(r.right), 0)self.ans = max(self.ans, r.val+left+right) return r.val+max(left, right)maxGain(root)return self.ans
补充题23. 检测循环依赖
468. 验证IP地址