leetcode 21 合并两个有序链表 22 括号生成
21. 合并两个有序链表
难度简单1728收藏分享切换为英文接收动态反馈
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例 1:
输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]
示例 2:
输入:l1 = [], l2 = []
输出:[]
示例 3:
输入:l1 = [], l2 = [0]
输出:[0]
提示:
- 两个链表的节点数目范围是
[0, 50]
-100 <= Node.val <= 100
l1
和l2
均按 非递减顺序 排列
# Definition for singly-linked list.
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
class Solution:
def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
if not l1:
return l2
if not l2:
return l1
if l1.val <= l2.val:
node = ListNode(0, l1)
else:
node = ListNode(0, l2)
l3 = l2
l2 = l1
l1 = l3
while l2:
if l1.next:
if l2.val >= l1.val and l2.val <= l1.next.val:
l1.next = ListNode(l2.val,l1.next)
l2 = l2.next
else:
l1 = l1.next
else:
l1.next = l2
break
return node.next
def mergeTwoLists2(self, l1: ListNode, l2: ListNode) -> ListNode:
if not l1:
return l2
if not l2:
return l1
if l1.val < l2.val:
l1.next = self.mergeTwoLists2(l1.next,l2)
return l1
l2.next = self.mergeTwoLists2(l1,l2.next)
return l2
def make_list(a):
nodes = []
for i in range(len(a)):
nodes.append(ListNode(a[i]))
for i in range(1, len(a)):
nodes[i - 1].next = nodes[i]
return nodes[0]
def print_node(a):
while a:
print(a.val)
a = a.next
if __name__ == '__main__':
a = [2,4,7]
b = [1,1,5,8]
a = make_list(a)
b = make_list(b)
# print_node(a)
# print_node(b)
a = Solution().mergeTwoLists2(a, b)
print_node(a)
22. 括号生成
难度中等1804收藏分享切换为英文接收动态反馈
数字 n
代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
示例 1:
输入:n = 3
输出:["((()))","(()())","(())()","()(())","()()()"]
示例 2:
输入:n = 1
输出:["()"]
提示:
1 <= n <= 8
from typing import List
class Solution:
def generateParenthesis(self, n: int) -> List[str]:
ans = []
def dfs(left,right,s):
if left == 0 and right == 0:
ans.append(s)
if left > 0:
dfs(left-1,right,s + "(")
if right > left:
dfs(left,right-1,s + ")")
dfs(n,n, "")
print(ans)
if __name__ == '__main__':
Solution().generateParenthesis(2)
dfs(left,right-1,s + ")")
dfs(n,n, "")
print(ans)
if __name__ == '__main__':
Solution().generateParenthesis(2)