1. 349_两个数组的交集
题目来源:力扣
题目描述:给定两个数组 nums1
和 nums2
,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。
代码,
class Solution(object):
def intersection(self, nums1, nums2):
"""
:type nums1: List[int]
:type nums2: List[int]
:rtype: List[int]
"""
r = list(set(nums1) & set(nums2))
return r
2. 202_快乐数
题目来源:力扣
编写一个算法来判断一个数 n 是不是快乐数。
「快乐数」 定义为:
对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。
然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。
如果这个过程 结果为 1,那么这个数就是快乐数。
如果 n 是 快乐数 就返回 true ;不是,则返回 false 。
题解:
首先找出一个数所有的数字;计算平方和;有两种终止情况:1)和为1;2)无限循环。
代码,
class Solution(object):
def isHappy(self, n):
"""
:type n: int
:rtype: bool
n_exist: 记录出现过的求和数字
element:一个数中个位、十位、百位。。。出现的式子
sum_n:平方和
"""
n_exist = [n]
element = self.findElement(n)
sum_n = self.cal_square_sum(element)
while sum_n != 1:
if sum_n in n_exist:
return False
n_exist.append(sum_n)
element = self.findElement(sum_n)
sum_n = self.cal_square_sum(element)
return True
# 得到当前数值中所有的数字
def findElement(self, n):
element = []
while n >= 10:
element.append(n % 10)
n = int(n/10)
if n != 0:
element.append(n)
return element
# 计算平方和
def cal_square_sum(self, element):
sum_n = 0
for i in range(len(element)):
sum_n += element[i]**2
return sum_n
if __name__ == '__main__':
s = Solution()
r = s.isHappy(2)
print(r)
# ele = s.findElement(100)
# print(ele)
3. 1_两数之和
题目来源:力扣
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
题解
注意,两数之和不一定为正数,这里的和是广义的和,也可能是减法。因此,找到Target-nums[i]是关键,只要找到,返回即可。
class Solution(object):
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
: dic: {Target-n_index: index}
"""
dic = {}
for i in range(len(nums)):
if nums[i] in dic.keys():
return [i, dic[nums[i]]]
left_target = target - nums[i]
dic.setdefault(left_target, i)
return