Leetcode 腾讯50题 day4
No.20 有效的括号
题目描述
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
输入: "([)]"
输出: false
代码
class Solution:
def isValid(self, s: str) -> bool:
left = ['(', '[', '{']
right = [')', ']', '}']
stack = []
for ch in s:
if ch in left:
stack.append(ch)
else:
if len(stack)==0:
return False
r = stack.pop()
if right.index(ch) != left.index(r):
return False
return True if len(stack)==0 else False
No.21 合并两个有序链表
题目描述
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]
提示:
提示:
两个链表的节点数目范围是 [0, 50]
-100 <= Node.val <= 100
l1 和 l2 均按 非递减顺序 排列
代码
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
p, q = l1, l2
if p==None:
return q
elif q==None:
return p
if p.val <= q.val:
res = ListNode(p.val)
p = p.next
else:
res = ListNode(q.val)
q = q.next
root = res
while(p!=None and q!=None):
if p.val <= q.val:
res.next = ListNode(p.val)
res = res.next
p = p.next
else:
res.next = ListNode(q.val)
res = res.next
q = q.next
if p==None:
res.next = q
else:
res.next = p
return root