22222/leetcode
/62. Unique Paths.py
'''
Author: Whanquan Jiang
Date: 2021-11-09 16:12:31
LastEditTime: 2021-11-13 13:42:11
LastEditors: Whanquan Jiang
Description: In File
FilePath: /leetcode/81. Search in Rotated Sorted Array.py
'''
from typing import List
from itertools import accumulate
class Solution:
def search(self, nums: List[int], target: int) -> int:
if not nums:
return -1
if len(nums) == 1:
return 0 if nums[0] == target else -1
left = 0
right = len(nums) - 1
while left <= right:
middle = (left + right) // 2
if target == nums[middle]:
return middle
# 原始数组的升序序列,但是旋转后
# 如果target在左侧,left应该向右移动
# 如果target在右侧,right应该向左移动
if nums[0] <= nums[middle]:
if nums[0] <= target < nums[middle]:
right = middle - 1
else:
left = middle + 1
# 如果target在右侧,left应该向右移动
# 如果target在左侧,right应该���左移动
else:
if nums[middle] < target <= nums[right]:
left = middle + 1
else:
right = middle - 1
return -1
/72. Edit Distance.py
'''
Author: Whanquan Jiang
Date: 2021-11-13 16:18:39
LastEditTime: 2021-11-13 16:26:26
LastEditors: Whanquan Jiang
Description: In File
FilePath: /leetcode/63. Unique Path.py
'''
from typing import List
class Solution:
def uniquePaths(self, m: int, n: int) -> int:
# m行n列的网格,从左上角走到右下角的路径数
# m-1行n-1列的网格,从左上角走到右下角的路径数
# 从m-1行n-1列的网格,走到m行n列的网格,有多少种走法?
# m-1行n-1列的网格,从左上角走到右下角的路径数
# m-1行n-1列的网格,从左上角走到右下角的路径数
# m-1行n-2列的网格,从左上角走到右下角的路径数
# m-2行n-1列的网格,从左上角走到右下角的路径数
# 从m-1行n-1列的网格,走到m行n列的网格,有多少种走法?
# 状态转移方程:dp[i][j] = dp[i-1][j] + dp[i][j-1]
# 二维数组的初始化
# 初始化第一行
# 初始化第一列
# 状态转移方程
# dp[i][j] = dp[i-1][j] + dp[i][j-1]
# 注意:二维数组的初始化
dp = [[0] * n for _ in range(m)]
dp[0][0] = 1
for i in range(1, m):
dp[i][0] = dp[i - 1][0]
for j in range(1, n):
dp[0][j] = dp[0][j - 1]
for i in range(1, m):
for j in range(1, n):
dp[i][j] = dp[i - 1][j] + dp[i][j - 1]
return dp[-1][-1]
class Solution:
def uniquePaths(self, m: int, n: int) -> int:
# m行n列的网格,从左上角走到右下角的路径数
# m-1行n-1列的网格,从左上角走到右下角的路径数
# 从m-1行n-1列的网格,走到m行n列的网格,有多少种走法?
# m-1行n-1列的网格,从左上角走到右下角的路径数
# m-1行n-1列的网格,从左上角走到右下角的路径数
# m-1行n-2列的网格,从左上角走到右下角的路径数
# m-2行n-1列的网格,从左上角走到右下角的路径数
# 从m-1行n-1列的网格,走到m行n列的网格,有多少种走法?
# 状态转移方程:dp[i][j] = dp[i-1][j] + dp[i][j-1]
# 二维数组的初始化
# 初始化第一行
# 初始化第一列
# 状态转移方程
# dp[i][j] = dp[i-1][j] + dp[i][j-1]