class Solution(object):
def uniquePathsWithObstacles(self, obstacleGrid):
"""
:type obstacleGrid: List[List[int]]
:rtype: int
"""
res = len(obstacleGrid)
tep = len(obstacleGrid[0])
cur = [0]*tep
cur[0] = 1-obstacleGrid[0][0]
for i in range(1,tep):
cur[i] = cur[i-1]*(1-obstacleGrid[0][i])
for i in range(1,res):
cur[0] *= 1-obstacleGrid[i][0]
for j in range(1,tep):
cur[j] = (cur[j-1]+cur[j])*(1-obstacleGrid[i][j])
return cur[-1]
class Solution(object):
def coinChange(self, coins, amount):
"""
:type coins: List[int]
:type amount: int
:rtype: int
"""
dp = [float('inf')] * (amount+1)
dp[0] = 0
for i in range(1,amount+1):
for coin in coins:
if i >= coin:
dp[i] = min(dp[i],dp[i-coin]+1)
return dp[-1] if dp[-1]!=float('inf') else -1