题目来源力扣
1 两数之和
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
思路:暴力求解
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
for i in range(len(nums)-1):
for j in range(i+1,len(nums)):
if nums[i]+nums[j]==target:
return [i,j]
20 有效的括号
给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
每个右括号都有一个对应的相同类型的左括号。
思路:利用栈的思想,左括号进栈,右括号匹配出战,不匹配进栈。若最后只剩下预定义的栈顶元素(为避免考虑栈是否为空的情况)则返回True。
class Solution:
def isValid(self, s: str) -> bool:
stack=['a']
match={
')':'(',']':'[','}':'{'}
for i in s:
if i in ['(','[','{']:
stack.append(i)
elif stack[-1]==match[i]:
stack.pop()
else:
stack.append(i)
if len(stack)==1:
return True
else:
return False
21 合并两个有序列表
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
思路:建立第三个链表,进行合并
代码
# 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, list1: Optional[ListNode], list2: Optional[ListNode]