1 两数之和
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
思路1: 双层遍历
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
res = []
for i in range(len(nums)):
for j in range(i+1, len(nums)):
if nums[i] + nums[j] == target:
res.append(i)
res.append(j)
return res
【要点】for i in range(len(list)): 产生0 —(len-1)的list。不要再-1了
思路2:将原list映射成哈希表(dic实现),再建立一个空表dic, 空dic的key:target - num,value:原List组成的字典值对应的索引。
如果检测到某个nums中的值已经存在于新建的字典中,那么证明可以组成一个target值,这时返回此刻遍历到的索引与dict中记录下来的索引。
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
dic = {}
for key, num in enumerate(nums):
if num in dic:
return [dic[num], key]
else:
dic[target - num] = key
【要点】for key, num in enumerate(nums):创建dic
9 判断int是不是为回文数
思路:int->str->list,二分取Mid,再切片比较mid左右
class Solution:
def isPalindrome(self, x: int) -> bool:
if x < 0:
return False
else:
str1 = str(x)
list1 = list(str1)
listre = list1[::-1]
n = len(list1)
mid = n//2
list2 = list1[:mid]
list3 = listre[:mid]
if list2 == list3:
return True
else:
return False
【要点】切片时list[:3]表示取前三个元素而不是取到index3