使用字典解题
明确题目要求:使用nums数组中的元素充当索引值,再找一个元素,放入ans
思路:创建新列表,索引值匹配的放进去,不匹配的,插入进去
初次使用递归,个别代码格式需要完善
但是这样,时间复杂度和空间复杂度都为O(n^2)
优化代码如下:while循环也可以重复同一步骤,同时不需要额外数组空间,可以直接在原列表上修改
[递归写法]
class Solution:
def triangularSum(self, nums: List[int]) -> int:
n=len(nums)
return self.dfs(nums,n)
def dfs(self,nums,n):#nums继承的是上一次的ret
if n==1:
return nums[0]
ret=[]
for i in range(n-1):
ret.append((nums[i] + nums[i+1]) % 10)
return self.dfs(ret,n-1)#需要对返回值做改变
【优化写法】
from typing import List
class Solution:
def triangularSum(self, nums: List[int]) -> int:
n = len(nums)
while n > 1:
for i in range(n - 1):
nums[i] = (nums[i] + nums[i + 1]) % 10
n -= 1
return nums[0]
for循环嵌套