python语言
变量处理
处理输入的字符串为变量
import ast
vars = ast.literal_eval(input)
在Python中,可以使用all()
函数对一个元素为bool变量的列表进行且运算
bool_list = [True, True, False, True] result = all(bool_list)
在Python中,可以使用any()
函数对一个元素为bool变量的列表进行或运算
bool_list = [True, False, False, True] result = any(bool_list)
判断一个float是否为int
import math
math.isclose(num, round(num))
非运算
not(bool)
注意:不能用~bool, 因为~代表变量减1
倒序迭代
range(end, start, -1), 注意要设置步长为-1,否则只会生成一个长度为0的变量。
递归函数思想
一般需要迭代性,逐步深入的算法代码,可能会对算力消耗大,或者代码需要进行不确定次数的迭代,需要用迭代来处理。
逐步深入的代码,一方面为了在迭代中加入终止条件,一方面为了节省不必要的算力开销,需要在迭代过程中设置多个if判断,来实现有效的迭代运算,避免冗余。
一般设计迭代算法,要考虑连续两层函数迭代,不同情况的组合都会带来不太一样的结果,不同的输入带来不同的输出结果情况(迭代过程中内层的输出是外层的输入)是设计迭代算法的出发点。
class Solution:
def coinChange(self, coins: List[int], amount: int) -> int:
@functools.lru_cache(amount)
def dp(rem) -> int:
if rem < 0: return -1
if rem == 0: return 0
mini = int(1e9)
for coin in self.coins:
res = dp(rem - coin)
if res >= 0 and res < mini:
mini = res + 1
return mini if mini < int(1e9) else -1
self.coins = coins
if amount < 1: return 0
return dp(amount)
作者:力扣官方题解 链接:https://leetcode.cn/problems/coin-change/solutions/132979/322-ling-qian-dui-huan-by-leetcode-solution/ 来源:力扣(LeetCode) 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
内层/外层 | |||