leetcode 最小路径和
最小路径和给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。
说明:每次只能向下或者向右移动一步。示例:12345678输入:[ [1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/minimum-path-sum
代码:88时45空1234567891011121314151617181920212223class Solution { public int minPathSum(int[][] grid) { //每次只能向下或者向右移动一步 for(int i=0;i<grid.length;i++) for(int j=0;j<grid[0].length;j++) { if(i==0&&j==0)continue; ...
leetcode 除数博弈
除数博弈爱丽丝和鲍勃一起玩游戏,他们轮流行动。爱丽丝先手开局。
最初,黑板上有一个数字 N 。在每个玩家的回合,玩家需要执行以下操作:
选出任一 x,满足 0 < x < N 且 N % x == 0 。
用 N - x 替换黑板上的数字 N 。
如果玩家无法执行这些操作,就会输掉游戏。
只有在爱丽丝在游戏中取得胜利时才返回 True,否则返回 False。假设两个玩家都以最佳状态参与游戏。
示例 1:123输入:2输出:true解释:爱丽丝选择 1,鲍勃无法进行操作。
示例 2:123输入:3输出:false解释:爱丽丝选择 1,鲍勃也选择 1,然后爱丽丝无法进行操作。
提示:
1 <= N <= 1000
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/divisor-game
代码:100时17空12345class Solution { public boolean divisorGame(int N) { return N%2==0; } ...
leetcode 旋转数组的最小数字
旋转数组的最小数字把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。
示例 1:12输入:[3,4,5,1,2]输出:1
示例 2:12输入:[2,2,2,0,1]输出:0
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof
代码:100时18空1234567891011class Solution { public int minArray(int[] numbers) { int a=numbers[0]; int x=a; for(int i=numbers.length-1;i>=0&&numbers[i]<=a;i--) { if(n ...
leetcode 不同的二叉搜索树 II
不同的二叉搜索树 II给定一个整数 n,生成所有由 1 … n 为节点所组成的 二叉搜索树 。
示例:1234567891011121314151617输入:3输出:[ [1,null,3,2], [3,2,null,1], [3,1,null,null,2], [2,1,3], [1,null,2,null,3]]解释:以上的输出对应以下 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2 / / \ \ 2 1 2 3
提示:
0 <= n <= 8
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/unique-binary-search-trees ...
leetcode 搜索旋转排序数组
搜索旋转排序数组假设按照升序排序的数组在预先未知的某个点上进行了旋转。
( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。
搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。
你可以假设数组中不存在重复的元素。
你的算法时间复杂度必须是 O(log n) 级别。
示例 1:12输入: nums = [4,5,6,7,0,1,2], target = 0输出: 4
示例 2:12输入: nums = [4,5,6,7,0,1,2], target = 3输出: -1
代码:12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667class Solution { public int search(int[] nums, int target) { ...
leetcode 字符串的排列
字符串的排列给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列。
换句话说,第一个字符串的排列之一是第二个字符串的子串。
示例1:123输入: s1 = "ab" s2 = "eidbaooo"输出: True解释: s2 包含 s1 的排列之一 ("ba").
示例2:12输入: s1= "ab" s2 = "eidboaoo"输出: False
注意:
1.输入的字符串只包含小写字母2.两个字符串的长度都在 [1, 10,000] 之间
第一次代码(超时)1234567891011121314151617181920212223242526272829303132333435363738394041424344class Solution { public boolean checkInclusion(String s1, String s2) { if(s1=& ...
leetcode 字符串相乘
字符串相乘给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。
示例 1:12输入: num1 = "2", num2 = "3"输出: "6"
示例 2:12输入: num1 = "123", num2 = "456"输出: "56088"
说明:1.num1 和 num2 的长度小于110。2.num1 和 num2 只包含数字 0-9。3.num1 和 num2 均不以零开头,除非是数字 0 本身。4.不能使用任何标准库的大数类型(比如 BigInteger)或直接将输入转换为整数来处理。
代码:123456789101112131415161718192021222324252627282930313233343536class Solution { public String multiply(String num1, Stri ...
leetcode 简化路径
简化路径以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。
在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (..) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。
更多信息 请参阅:Linux / Unix中的绝对路径 vs 相对路径 https://blog.csdn.net/u011327334/article/details/50355600
请注意,返回的规范路径必须始终以斜杠 / 开头,并且两个目录名之间必须只有一个斜杠 /。最后一个目录名(如果存在)不能以 / 结尾。此外,规范路径必须是表示绝对路径的最短字符串。
示例 1:123输入:"/home/"输出:"/home"解释:注意,最后一个目录名后面没有斜杠。
示例 2:123输入:"/../"输出:"/"解释:从根目录向上一级是不可行的,因为根是你可以到达的最高级。
示例 3:123 ...
leetcode 翻转字符串里的单词
翻转字符串里的单词给定一个字符串,逐个翻转字符串中的每个单词。
说明:
无空格字符构成一个 单词 。
输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。
示例 1:12输入:"the sky is blue"输出:"blue is sky the"
示例 2:123输入:" hello world! "输出:"world! hello"解释:输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
示例 3:123输入:"a good example"输出:"example good a"解释:如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。
示例 4:12输入:s = " Bob Loves Alice "输出:"Alice Loves Bob"
示例 5:12输入:s ...
leetcode 复原IP地址
复原IP地址给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。
有效的 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 ‘.’ 分隔。
例如:”0.1.2.201” 和 “192.168.1.1” 是 有效的 IP 地址,但是 “0.011.255.245”、”192.168.1.312” 和 “192.168@1.1“ 是 无效的 IP 地址。
示例 1:12输入:s = "25525511135"输出:["255.255.11.135","255.255.111.35"]
示例 2:12输入:s = "0000"输出:["0.0.0.0"]
示例 3:12输入:s = "1111"输出:["1.1.1.1"]
示例 4:12输入:s = "010010"输出:["0.10.0.10",&quo ...