1.题目:唯一的元素和
https://leetcode-cn.com/problems/sum-of-unique-elements/https://leetcode-cn.com/problems/sum-of-unique-elements/题解:(注意列表等数据结构的深拷贝问题)
class Solution:
def sumOfUnique(self, nums: List[int]) -> int:
a = set(nums)
b = a.copy() # 深拷贝
# b = a # 这样就不行,因为这样是浅拷贝,在内存中的储存位置是一样的,对b的操作实质上就是对a的操作
for i in range(len(nums)-1, -1, -1): # 倒序,避免删除元素对索引的影响(这个在之前的刷题中有讲过)
if nums[i] in b:
b.remove(nums[i])
del nums[i]
a = list(a)
for i in range(len(a)-1, -1, -1):
if a[i] in nums:
del a[i]
return sum(a)
2.题目:将找到的值乘以2
class Solution:
def findFinalValue(self, nums: List[int], original: int) -> int:
while True:
if original in nums:
original *= 2
else:
return original
3.题目:将数字变成0的操作次数
题解:
# 简单递归题 之后有时间可以考虑试下用栈实现
class Solution:
def numberOfSteps(self, num: int) -> int:
def back(num):
if num == 0:
return 0
if num // 2 == num / 2:
return 1 + back(num/2)
else:
return 1 + back(num-1)
return back(num)
4.分组最高的所有下标
题解:
class Solution:
def maxScoreIndices(self, nums: List[int]) -> List[int]:
a = collections.defaultdict(list) # 哈希表中key是最值,value下标
temp = 0
for i in nums:
if i == 1:
temp += 1
for i in range(len(nums)):
a[temp].append(i)
if nums[i] == 0:
temp += 1
elif nums[i] == 1:
temp -= 1
a[temp].append(len(nums))
return a[max(a)]
官方题解: