
leetcode前100
文章平均质量分 57
求学旅途
一名求学者
展开
-
Java轻松搞定leetcode前100系列之53. 最大子序和
题目描述: 给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例 1: 输入:nums = [-2,1,-3,4,-1,2,1,-5,4] 输出:6 解释:连续子数组[4,-1,2,1] 的和最大,为6 。 示例 2: 输入:nums = [1] 输出:1 示例 3: 输入:nums = [0] 输出:0 示例 4: 输入:nums = [-1] 输出:-1 示例 5: 输入:nums = [-100...转载 2021-02-22 14:52:51 · 279 阅读 · 0 评论 -
Java轻松搞定leetcode前100系列之50. Pow(x, n) java实现x的n次幂函数
实现pow(x, n),即计算 x 的 n 次幂函数(即,xn)。 示例 1: 输入:x = 2.00000, n = 10 输出:1024.00000 示例 2: 输入:x = 2.10000, n = 3 输出:9.26100 示例 3: 输入:x = 2.00000, n = -2 输出:0.25000 解释:2^-2 = 1/2^2 = 1/4 = 0.25 提示: -100.0 <x< 100.0 -2^31<= n <=...转载 2021-02-22 11:37:19 · 342 阅读 · 0 评论 -
Java轻松搞定leetcode前100系列之49. 字母异位词分组
题目描述: 给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。 示例: 输入: ["eat", "tea", "tan", "ate", "nat", "bat"] 输出: [ ["ate","eat","tea"], ["nat","tan"], ["bat"] ] 说明: 所有输入均为小写字母。 不考虑答案输出的顺序。 题目分析: 两个字符串互为字母异位词,当且仅当两个字符串包含的字母相同。同一组字母异位词中的字符串具备相同点,可以使用...转载 2021-02-22 10:38:06 · 183 阅读 · 0 评论 -
一个可以让你对回溯算法从入门到掌握的帖子
链接:https://leetcode-cn.com/problems/permutations/solution/hui-su-suan-fa-python-dai-ma-java-dai-ma-by-liweiw/转载 2021-02-21 16:09:41 · 82 阅读 · 0 评论 -
Java轻松搞定leetcode前100系列之45.跳跃游戏 II
题目描述: 给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 你的目标是使用最少的跳跃次数到达数组的最后一个位置。 示例: 输入: [2,3,1,1,4] 输出: 2 解释: 跳到最后一个位置的最小跳跃数是 2。 从下标为 0 跳到下标为 1 的位置,跳1步,然后跳3步到达数组的最后一个位置。 说明: 假设你总是可以到达数组的最后一个位置。 解题方法: 正向查找可到达的最大位置 如果我们「贪心」地进行正向查找,...转载 2021-02-20 16:06:13 · 175 阅读 · 0 评论 -
Java轻松搞定leetcode前100系列之43.字符串相乘
题目: 给定两个以字符串形式表示的非负整数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 本身。 不能使用...转载 2021-02-20 14:18:20 · 173 阅读 · 0 评论 -
Java轻松搞定leetcode前100系列之42. 接雨水 详细通俗的思路分析,多解法
题目描述: 给定n个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 输入:height = [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 示例 2: 输入:height = [4,2,0,3,2,5] 输出:9 提示: n == height.length 0 <= n..转载 2021-01-05 16:38:45 · 164 阅读 · 0 评论 -
Java轻松搞定leetcode前100系列之41. 缺失的第一个正数
题目描述: 给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。 示例1: 输入: [1,2,0] 输出: 3 示例2: 输入: [3,4,-1,1] 输出: 2 示例3: 输入: [7,8,9,11,12] 输出: 1 前言 如果本题没有额外的时空复杂度要求,那么就很容易实现: 我们可以将数组所有的数放入哈希表,随后从 1 开始依次枚举正整数,并判断其是否在哈希表中; 我们可以从 1 开始依次枚举正整数,并遍历数组,判断其是否在数组中。 如果数组...转载 2021-01-04 21:28:43 · 104 阅读 · 0 评论 -
Java轻松搞定leetcode前100系列之40. 组合总和 II
题目描述: 给定一个数组candidates和一个目标数target,找出candidates中所有可以使数字和为target的组合。 candidates中的每个数字在每个组合中只能使用一次。 说明: 所有数字(包括目标数)都是正整数。 解集不能包含重复的组合。 示例1: 输入: candidates =[10,1,2,7,6,1,5], target =8, 所求解集为: [ [1, 7], [1, 2, 5], [2, 6], [1, 1, 6]...转载 2021-01-04 16:41:35 · 244 阅读 · 1 评论 -
Java轻松搞定leetcode前100系列之39. 组合总和
题目描述: 给定一个无重复元素的数组candidates和一个目标数target,找出candidates中所有可以使数字和为target的组合。 candidates中的数字可以无限制重复被选取 说明: 所有数字(包括target)都是正整数。 解集不能包含重复的组合。 示例1: 输入:candidates = [2,3,6,7], target = 7, 所求解集为: [ [7], [2,2,3] ] 示例2: 输入:candidates = ...转载 2020-12-31 19:20:04 · 190 阅读 · 0 评论 -
Java轻松搞定leetcode前100系列之36. 有效的数独
题目描述: 判断一个9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。 1.数字1-9在每一行只能出现一次。 2.数字1-9在每一列只能出现一次。 3.数字1-9在每一个以粗实线分隔的3x3宫内只能出现一次。 上图是一个部分填充的有效的数独。 数独部分空格内已填入了数字,空白格用'.'表示。 示例1: 输入: [ ["5","3",".",".","7",".",".",".","."], ["6",".",".","1","9",...转载 2020-12-31 14:53:29 · 117 阅读 · 0 评论 -
Java轻松搞定leetcode前100系列之38. 外观数列
题目描述: 给定一个正整数 n ,输出外观数列的第 n 项。 「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。 你可以将其视作是由递归公式定义的数字字符串序列: countAndSay(1) = "1" countAndSay(n) 是对 countAndSay(n-1) 的描述,然后转换成另一个数字字符串。 前五项如下: 1. 1 2. 11 3. 21 4. 1211 5. 111221 第一项是数字 1 描述前一项,...转载 2020-12-31 14:46:06 · 186 阅读 · 0 评论 -
Java轻松搞定leetcode前100系列之35. 搜索插入位置
题目描述: 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 你可以假设数组中无重复元素。 示例 1: 输入: [1,3,5,6], 5 输出: 2 示例2: 输入: [1,3,5,6], 2 输出: 1 示例 3: 输入: [1,3,5,6], 7 输出: 4 示例 4: 输入: [1,3,5,6], 0 输出: 0 题目解答: 与34题类似,使用二分法 代码如下: .转载 2020-12-29 11:16:34 · 77 阅读 · 0 评论 -
Java轻松搞定leetcode前100系列之34. 在排序数组中查找元素的第一个和最后一个位置
题目描述: 给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target,返回[-1, -1]。 设计并实现时间复杂度为O(log n)的算法解决此问题 示例 1: 输入:nums = [5,7,7,8,8,10], target = 8 输出:[3,4] 示例2: 输入:nums = [5,7,7,8,8,10], target = 6 输出:[-1,-1] 示例 3: ...转载 2020-12-28 22:11:49 · 131 阅读 · 0 评论 -
Java轻松搞定leetcode前100系列之32. 最长有效括号
题目描述: 给定一个只包含 '('和 ')'的字符串,找出最长的包含有效括号的子串的长度。 示例1: 输入: "(()" 输出: 2 解释: 最长有效括号子串为 "()" 示例 2: 输入: ")()())" 输出: 4 解释: 最长有效括号子串为 "()()" 题目解答: 栈 思路和算法 撇开方法一提及的动态规划方法,相信大多数人对于这题的第一直觉是找到每个可能的子串后判断它的有效性,但这样的时间复杂度会达到 O(n^3),无法通过所有测试用例。但是通过栈,我们可以在遍历给定...转载 2020-12-27 20:30:53 · 127 阅读 · 0 评论 -
Java轻松搞定leetcode前100系列之33. 搜索旋转排序数组
题目描述: 升序排列的整数数组 nums 在预先未知的某个点上进行了旋转(例如, [0,1,2,4,5,6,7] 经旋转后可能变为[4,5,6,7,0,1,2] )。 请你在数组中搜索target ,如果数组中存在这个目标值,则返回它的索引,否则返回-1。 示例 1: 输入:nums = [4,5,6,7,0,1,2], target = 0 输出:4 示例2: 输入:nums = [4,5,6,7,0,1,2], target = 3 输出:-1 示例 3: 输入:n...转载 2020-12-27 19:18:24 · 116 阅读 · 0 评论 -
Java轻松搞定leetcode前100系列之31. 下一个排列 思路+推导+步骤,看不懂算我输!
题目描述: 实现获取 下一个排列 的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。 如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。 必须 原地 修改,只允许使用额外常数空间。 示例 1: 输入:nums = [1,2,3] 输出:[1,3,2] 示例 2: 输入:nums = [3,2,1] 输出:[1,2,3] 示例 3: 输入:nums = [1,1,5] 输出:[1,5,1] 示例 4: 输入:nums = [1] .转载 2020-12-10 19:11:39 · 138 阅读 · 3 评论 -
Java轻松搞定leetcode前100系列之30. 串联所有单词的子串
题目描述: 给定一个字符串s和一些长度相同的单词words。找出 s 中恰好可以由words 中所有单词串联形成的子串的起始位置。 注意子串要与words 中的单词完全匹配,中间不能有其他字符,但不需要考虑words中单词串联的顺序。 示例 1: 输入: s = "barfoothefoobarman", words = ["foo","bar"] 输出:[0,9] 解释: 从索引 0 和 9 开始的子串分别是 "barfoo" 和 "foobar" 。 输出的顺序不重...原创 2020-12-10 14:36:17 · 120 阅读 · 0 评论 -
Java轻松搞定leetcode前100系列之29.两数相除
题目描述: 给定两个整数,被除数dividend和除数divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。 返回被除数dividend除以除数divisor得到的商。 整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335) = -2 示例1: 输入: dividend = 10, divisor = 3 输出: 3 解释: 10/3 = truncate(3.33333..) =...原创 2020-12-08 14:47:34 · 133 阅读 · 0 评论