网站建设完成情况,免费绘画素材网站,网站建设工作 方案,国际贸易网登录目录
1. 不同路径 II
2. 字符串转换整数 (atoi)
3. 字符串相乘 1. 不同路径 II
一个机器人位于一个 m x n 网格的左上角 #xff08;起始点在下图中标记为“Start” #xff09;。
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角#xff08;在下图中…
目录
1. 不同路径 II
2. 字符串转换整数 (atoi)
3. 字符串相乘 1. 不同路径 II
一个机器人位于一个 m x n 网格的左上角 起始点在下图中标记为“Start” 。
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角在下图中标记为“Finish”。
现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径 网格中的障碍物和空位置分别用 1 和 0 来表示。
示例 1 输入obstacleGrid [[0,0,0],[0,1,0],[0,0,0]]
输出2
解释3x3 网格的正中间有一个障碍物。从左上角到右下角一共有 2 条不同的路径
1. 向右 - 向右 - 向下 - 向下
2. 向下 - 向下 - 向右 - 向右示例 2 输入obstacleGrid [[0,1],[0,0]]
输出1提示
m obstacleGrid.lengthn obstacleGrid[i].length1 m, n 100obstacleGrid[i][j] 为 0 或 1
代码
class Solution(object):def uniquePathsWithObstacles(self, obstacleGrid):m, n len(obstacleGrid), len(obstacleGrid[0])if m 0:return 0dmap [[0] * (n 1) for _ in range(m 1)]dmap[m - 1][n] 1for i in range(m - 1, -1, -1):for j in range(n - 1, -1, -1):if obstacleGrid[i][j] 1:dmap[i][j] 0else:dmap[i][j] dmap[i][j 1] dmap[i 1][j]return dmap[0][0]# %%
s Solution()
print(s.uniquePathsWithObstacles(obstacleGrid [[0,0,0],[0,1,0],[0,0,0]]))
print(s.uniquePathsWithObstacles(obstacleGrid [[0,1],[0,0]]))
输出 2 1 相关阅读
Python 机器人魔鬼的步伐中居然隐藏着杨辉三角形_Hann Yang的博客-CSDN博客 2. 字符串转换整数 (atoi)
请你来实现一个 myAtoi(string s) 函数使其能将字符串转换成一个 32 位有符号整数类似 C/C 中的 atoi 函数。
函数 myAtoi(string s) 的算法如下
读入字符串并丢弃无用的前导空格检查下一个字符假设还未到字符末尾为正还是负号读取该字符如果有。 确定最终结果是负数还是正数。 如果两者都不存在则假定结果为正。读入下一个字符直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。将前面步骤读入的这些数字转换为整数即123 - 123 0032 - 32。如果没有读入数字则整数为 0 。必要时更改符号从步骤 2 开始。如果整数数超过 32 位有符号整数范围 [−231, 231 − 1] 需要截断这个整数使其保持在这个范围内。具体来说小于 −231 的整数应该被固定为 −231 大于 231 − 1 的整数应该被固定为 231 − 1 。返回整数作为最终结果。
注意
本题中的空白字符只包括空格字符 。除前导空格或数字后的其余字符串外请勿忽略 任何其他字符。
示例 1
输入s 42
输出42
解释加粗的字符串为已经读入的字符插入符号是当前读取的字符。
第 1 步42当前没有读入字符因为没有前导空格
^
第 2 步42当前没有读入字符因为这里不存在 - 或者
^
第 3 步42读入 42
^
解析得到整数 42 。
由于 42 在范围 [-231, 231 - 1] 内最终结果为 42 。
示例 2
输入s -42
输出-42
解释
第 1 步 -42读入前导空格但忽视掉
^
第 2 步 -42读入 - 字符所以结果应该是负数
^
第 3 步 -42读入 42
^
解析得到整数 -42 。
由于 -42 在范围 [-231, 231 - 1] 内最终结果为 -42 。示例 3
输入s 4193 with words
输出4193
解释
第 1 步4193 with words当前没有读入字符因为没有前导空格
^
第 2 步4193 with words当前没有读入字符因为这里不存在 - 或者
^
第 3 步4193 with words读入 4193由于下一个字符不是一个数字所以读入停止
^
解析得到整数 4193 。
由于 4193 在范围 [-231, 231 - 1] 内最终结果为 4193 。示例 4
输入s words and 987
输出0
解释
第 1 步words and 987当前没有读入字符因为没有前导空格
^
第 2 步words and 987当前没有读入字符因为这里不存在 - 或者
^
第 3 步words and 987由于当前字符 w 不是一个数字所以读入停止
^
解析得到整数 0 因为没有读入任何数字。
由于 0 在范围 [-231, 231 - 1] 内最终结果为 0 。
示例 5
输入s -91283472332
输出-2147483648
解释
第 1 步-91283472332当前没有读入字符因为没有前导空格
^
第 2 步-91283472332读入 - 字符所以结果应该是负数
^
第 3 步-91283472332读入 91283472332
^
解析得到整数 -91283472332 。
由于 -91283472332 小于范围 [-231, 231 - 1] 的下界最终结果被截断为 -231 -2147483648 。提示
0 s.length 200s 由英文字母大写和小写、数字0-9、 、、- 和 . 组成
代码
class Solution:def myAtoi(self, s: str) - int:y 0i 0w Falsesign Falseints [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]while i len(s):c s[i]isSign Falseif w False and c ! :w Trueif c -:sign TrueisSign Trueif c :isSign Falseif w and not isSign:try:v ints.index(c)y y*10vexcept:breaki 1offset 0if y 2147483647:y 2147483647offset 1return -(yoffset) if sign else y
# %%
s Solution()
print(s.myAtoi(s 42))print(s.myAtoi(s -42))
print(s.myAtoi(s 4193 with words))
print(s.myAtoi(s words and 987))
print(s.myAtoi(s -91283472332))
输出 42 -42 4193 0 -2147483648 3. 字符串相乘
给定两个以字符串形式表示的非负整数 num1 和 num2返回 num1 和 num2 的乘积它们的乘积也表示为字符串形式。
示例 1:
输入: num1 2, num2 3
输出: 6
示例 2:
输入: num1 123, num2 456
输出: 56088
说明
num1 和 num2 的长度小于110。num1 和 num2 只包含数字 0-9。num1 和 num2 均不以零开头除非是数字 0 本身。不能使用任何标准库的大数类型比如 BigInteger或直接将输入转换为整数来处理。
代码
class Solution(object):def multiply(self, num1, num2):if num1 0 or num2 0:return 0res ls1, ls2, len(num1), len(num2)ls ls1 ls2arr [0] * lsfor i in reversed(range(ls1)):for j in reversed(range(ls2)):arr[i j 1] int(num1[i]) * int(num2[j])for i in reversed(range(1, ls)):arr[i - 1] arr[i] // 10arr[i] % 10pos 0if arr[pos] 0:pos 1while pos ls:res res str(arr[pos])pos 1return resif __name__ __main__:s Solution()print (s.multiply(98, 9))print (s.multiply(2, 3))print (s.multiply(123, 456))
输出 882 6 56088