LeetCode
容景
这个作者很懒,什么都没留下…
展开
-
LeetCode 1004. 最大连续1的个数 III(遍历)+ (双指针优化)—— JavaScript
题链接:https://leetcode-cn.com/problems/max-consecutive-ones-iii/题描述:解题思路(遍历):遍历数组,在每个位置上面向后模拟,直到遍历完数组或者可翻转的次数用完。实时维护最长长度。代码实现(遍历):/** * @param {number[]} A * @param {number} K * @return {number} */var longestOnes = function(A, K) { let原创 2020-12-15 23:40:30 · 351 阅读 · 2 评论 -
LeetCode 495. 提莫攻击(遍历)—— JavaScript
题链接:https://leetcode-cn.com/problems/teemo-attacking/题描述:解题思路:如果 t[i - 1] + time <= t[i],表示上一次攻击的中毒状态已经结束,那么这一次的攻击中毒时间就是 time。如果 t[i - 1] + time > t[i],表示上一次攻击的中毒状态仍在持续,那么这一次的攻击中毒时间就是 t[i] - t[i - 1]。代码实现:/** * @param {number[]} timeS原创 2020-12-14 15:04:07 · 293 阅读 · 0 评论 -
LeetCode 300. 最长连续序列(map + 朴素遍历)+(set + 优化遍历)—— JavaScript
相似题:LeetCode 300. 最长上升子序列本题链接:https://leetcode-cn.com/problems/longest-consecutive-sequence/题描述:解题思路(map + 遍历):利用 map 表示当前元素是否存在数组中。每次对当前元素进行向前和向后的遍历,统计该元素的连续序列的长度。代码实现(map + 遍历):/** * @param {number[]} nums * @return {number} */var lo原创 2020-12-13 12:43:17 · 294 阅读 · 1 评论 -
LeetCode 134. 加油站(遍历)—— JavaScript
题链接:https://leetcode-cn.com/problems/gas-station/题描述:解题思路:遍历数组,在每一个位置上模拟行驶,因为答案唯一,所以成功一次就直接返回。代码实现:/** * @param {number[]} gas * @param {number[]} cost * @return {number} */var canCompleteCircuit = function(gas, cost) { for (let i =原创 2020-12-12 12:19:25 · 306 阅读 · 0 评论 -
LeetCode 139. 单词拆分(动态规划)—— JavaScript
题链接:https://leetcode-cn.com/problems/word-break/题描述:解题思路:dp[i] 表示从 s[0] 到 s[i -1] 的字符串能否被正确拆分。dp[i] 通过判断 dp[j] 是为 true 且 [j, i] 的字符串是否存在字典中来求值。那么我们要求的就是 dp[s.length] 是否能被正确拆分。代码实现:/** * @param {string} s * @param {string[]} wordDict * @原创 2020-12-10 22:28:22 · 232 阅读 · 1 评论 -
LeetCode 209. 长度最小的子数组(两种解法)(贪心 + 双指针)—— JavaScript
题链接:https://leetcode-cn.com/problems/minimum-size-subarray-sum/题描述:解题思路(贪心):遍历数组,每次从当前元素开始,往后累加元素值,如果累加值大于等于 s,这一段就是符合条件的子数组,最后返回最短的长度即可。代码实现(贪心):/** * @param {number} s * @param {number[]} nums * @return {number} */var minSubArrayLen = f原创 2020-12-10 12:08:15 · 178 阅读 · 1 评论 -
LeetCode 45. 跳跃游戏 II(贪心)—— JavaScript
题链接:https://leetcode-cn.com/problems/jump-game-ii/题描述:解题思路:每次在当前位置可到达的范围内寻找可跳跃数最高的。然后下次跳跃的位置就是该位置,每跳一次步数加一。代码实现:/** * @param {number[]} nums * @return {number} */var jump = function(nums) { if (nums.length == 1 || nums.length == 0) {原创 2020-12-09 17:45:27 · 247 阅读 · 1 评论 -
LeetCode 300. 最长上升子序列(动态规划)—— JavaScript
题链接:https://leetcode-cn.com/problems/longest-increasing-subsequence/submissions/题描述:解题思路:这里的上升序列是严格上升序列,[1, 2, 2] 输出是2。利用 dp 数组保存当前元素的最长上升子序列的长度。代码实现:/** * @param {number[]} nums * @return {number} */var lengthOfLIS = function(nums) {原创 2020-12-08 19:05:10 · 232 阅读 · 0 评论 -
LeetCode 55. 跳跃游戏(贪心)—— JavaScript
题链接:https://leetcode-cn.com/problems/jump-game/题描述:解题思路:对于位置 i 上的元素,它可以跳跃到的最远位置为 i + nums[i],如果某个元素跳跃的最远位置超出或等于数组末尾的位置则返回 true。即,我们依次遍历数组元素,并实时维护一个最远位置,对于当前遍历元素,如果该元素在最远位置内,则代表该元素是可到达的。代码实现:/** * @param {number[]} nums * @return {boolean}原创 2020-12-07 13:53:28 · 2169 阅读 · 6 评论 -
LeetCode 198. 打家劫舍 (动态规划 + 优化)—— JavaScript
题链接:https://leetcode-cn.com/problems/house-robber/题描述:解题思路:设置一个 dp 数组,dp[i] 表示在当前位置下,不触发警报能偷窃到的最大金额。则:dp[i] 等于与 i 不相邻的左边的 max(dp[0] — dp[i - 2]) 加上 nums[i]。dp[0] 为 nums[0],dp[1] 为 nums[1]。最后返回 dp[] 中的最大值即可。根据以上,我们写出第一版代码:代码实现(第一版):/** *原创 2020-12-06 10:19:03 · 258 阅读 · 3 评论 -
LeetCode 42. 接雨水(双指针 + 优化)—— JavaScript
题链接:https://leetcode-cn.com/problems/trapping-rain-water/题描述:解题思路(初始版):水能达到的最高位置为两边最大高度的较小值减去当前高度的值。对于数组中的每个元素,通过遍历数组,使用 left_max 保存当前元素左边的最大值,right_max 保存右边的最大值,然后用两者的较小值减去当前高度并累积到结果中。根据这个思路,我们写出初始版代码:代码实现(初始版):/** * @param {number[]} he原创 2020-12-05 11:40:01 · 224 阅读 · 0 评论 -
LeetCode 35. 搜索插入位置(二分查找)—— JavaScript
题链接:https://leetcode-cn.com/problems/search-insert-position/题描述:解题思路:对于查找索引,用正常的二分查找即可。对于查找插入位置,在二分查找的时候,记录第一个大于该元素的元素下标即可。代码实现:/** * @param {number[]} nums * @param {number} target * @return {number} */var searchInsert = function(nums,原创 2020-12-04 20:01:18 · 270 阅读 · 0 评论 -
LeetCode 14. 最长公共前缀(纵向扫描)—— JavaScript
题链接:https://leetcode-cn.com/problems/longest-common-prefix/题描述:解题思路:从前往后遍历每个字符串的每一列,比较相同列上的字符是否相同,如果相同则遍历下一列,不相同则表示当前列前面的部分为最长公共前缀。代码实现:/** * @param {string[]} strs * @return {string} */var longestCommonPrefix = function(strs) { if (st原创 2020-12-03 23:23:46 · 153 阅读 · 0 评论 -
LeetCode 3. 无重复字符的最长字串(滑动窗口)—— JavaScript
题链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/题描述:解题思路:使用两个指针表示不重复子串的左右边界,i 表示左边界,right 表示右边界,set 用来存储不重复子串。i 是当前不重复子串的起始位置,从 right 开始向后遍历,直到字符重复为止,这一段就是从 i 开始的不重复子串,那么下一次从 i + 1 开始遍历时,i + 1 到 right 这一段仍然是不原创 2020-12-02 17:07:00 · 144 阅读 · 1 评论