<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ySFRaabbcc的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ySFRaabbcc</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ySFRaabbcc]]></copyright><item><title><![CDATA[LeetCode 1004. 最大连续1的个数 III（遍历）+ （双指针优化）—— JavaScript]]></title><link>https://blog.youkuaiyun.com/ySFRaabbcc/article/details/111242790</link><guid>https://blog.youkuaiyun.com/ySFRaabbcc/article/details/111242790</guid><author>ySFRaabbcc</author><pubDate>Tue, 15 Dec 2020 23:40:30 +0800</pubDate><description><![CDATA[题链接：https://leetcode-cn.com/problems/max-consecutive-ones-iii/

题描述：



解题思路（遍历）：

遍历数组，在每个位置上面向后模拟，直到遍历完数组或者可翻转的次数用完。实时维护最长长度。

代码实现（遍历）：


/**
 * @param {number[]} A
 * @param {number} K
 * @return {number}
 */
var longestOnes = function(A, K) {
    let ]]></description><category></category></item><item><title><![CDATA[LeetCode 495. 提莫攻击（遍历）—— JavaScript]]></title><link>https://blog.youkuaiyun.com/ySFRaabbcc/article/details/111170648</link><guid>https://blog.youkuaiyun.com/ySFRaabbcc/article/details/111170648</guid><author>ySFRaabbcc</author><pubDate>Mon, 14 Dec 2020 15:04:07 +0800</pubDate><description><![CDATA[题链接：https://leetcode-cn.com/problems/teemo-attacking/

题描述：



解题思路：

如果 t[i - 1] + time &lt;= t[i]，表示上一次攻击的中毒状态已经结束，那么这一次的攻击中毒时间就是 time。

如果 t[i - 1] + time &gt; t[i]，表示上一次攻击的中毒状态仍在持续，那么这一次的攻击中毒时间就是 t[i] - t[i - 1]。

代码实现：


/**
 * @param {number[]} timeS]]></description><category></category></item><item><title><![CDATA[LeetCode 300. 最长连续序列（map + 朴素遍历）+（set + 优化遍历）—— JavaScript]]></title><link>https://blog.youkuaiyun.com/ySFRaabbcc/article/details/111097714</link><guid>https://blog.youkuaiyun.com/ySFRaabbcc/article/details/111097714</guid><author>ySFRaabbcc</author><pubDate>Sun, 13 Dec 2020 12:43:17 +0800</pubDate><description><![CDATA[相似题：LeetCode 300. 最长上升子序列

本题链接：https://leetcode-cn.com/problems/longest-consecutive-sequence/

题描述：



解题思路（map + 遍历）：

利用 map 表示当前元素是否存在数组中。

每次对当前元素进行向前和向后的遍历，统计该元素的连续序列的长度。

代码实现（map + 遍历）：


/**
 * @param {number[]} nums
 * @return {number}
 */
var lo]]></description><category></category></item><item><title><![CDATA[LeetCode 134. 加油站（遍历）—— JavaScript]]></title><link>https://blog.youkuaiyun.com/ySFRaabbcc/article/details/111059033</link><guid>https://blog.youkuaiyun.com/ySFRaabbcc/article/details/111059033</guid><author>ySFRaabbcc</author><pubDate>Sat, 12 Dec 2020 12:19:25 +0800</pubDate><description><![CDATA[题链接：https://leetcode-cn.com/problems/gas-station/

题描述：





解题思路：

遍历数组，在每一个位置上模拟行驶，因为答案唯一，所以成功一次就直接返回。

代码实现：


/**
 * @param {number[]} gas
 * @param {number[]} cost
 * @return {number}
 */
var canCompleteCircuit = function(gas, cost) {
    for (let i =]]></description><category></category></item><item><title><![CDATA[LeetCode 139. 单词拆分（动态规划）—— JavaScript]]></title><link>https://blog.youkuaiyun.com/ySFRaabbcc/article/details/111016428</link><guid>https://blog.youkuaiyun.com/ySFRaabbcc/article/details/111016428</guid><author>ySFRaabbcc</author><pubDate>Thu, 10 Dec 2020 22:28:22 +0800</pubDate><description><![CDATA[题链接：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
 * @]]></description><category></category></item><item><title><![CDATA[LeetCode 209. 长度最小的子数组（两种解法）（贪心 + 双指针）—— JavaScript]]></title><link>https://blog.youkuaiyun.com/ySFRaabbcc/article/details/110949476</link><guid>https://blog.youkuaiyun.com/ySFRaabbcc/article/details/110949476</guid><author>ySFRaabbcc</author><pubDate>Thu, 10 Dec 2020 12:08:15 +0800</pubDate><description><![CDATA[题链接：https://leetcode-cn.com/problems/minimum-size-subarray-sum/

题描述：



解题思路（贪心）：

遍历数组，每次从当前元素开始，往后累加元素值，如果累加值大于等于 s，这一段就是符合条件的子数组，最后返回最短的长度即可。

代码实现（贪心）：


/**
 * @param {number} s
 * @param {number[]} nums
 * @return {number}
 */
var minSubArrayLen = f]]></description><category></category></item><item><title><![CDATA[LeetCode 45. 跳跃游戏 II（贪心）—— JavaScript]]></title><link>https://blog.youkuaiyun.com/ySFRaabbcc/article/details/110931554</link><guid>https://blog.youkuaiyun.com/ySFRaabbcc/article/details/110931554</guid><author>ySFRaabbcc</author><pubDate>Wed, 09 Dec 2020 17:45:27 +0800</pubDate><description><![CDATA[题链接：https://leetcode-cn.com/problems/jump-game-ii/

题描述：



解题思路：

每次在当前位置可到达的范围内寻找可跳跃数最高的。然后下次跳跃的位置就是该位置，每跳一次步数加一。

代码实现：


/**
 * @param {number[]} nums
 * @return {number}
 */
var jump = function(nums) {
    if (nums.length == 1 || nums.length == 0) {
 ]]></description><category></category></item><item><title><![CDATA[LeetCode 300. 最长上升子序列（动态规划）—— JavaScript]]></title><link>https://blog.youkuaiyun.com/ySFRaabbcc/article/details/110879298</link><guid>https://blog.youkuaiyun.com/ySFRaabbcc/article/details/110879298</guid><author>ySFRaabbcc</author><pubDate>Tue, 08 Dec 2020 19:05:10 +0800</pubDate><description><![CDATA[题链接：https://leetcode-cn.com/problems/longest-increasing-subsequence/submissions/

题描述：



解题思路：

这里的上升序列是严格上升序列，[1, 2, 2] 输出是2。

利用 dp 数组保存当前元素的最长上升子序列的长度。

代码实现：


/**
 * @param {number[]} nums
 * @return {number}
 */
var lengthOfLIS = function(nums) {
  ]]></description><category></category></item><item><title><![CDATA[LeetCode 55. 跳跃游戏（贪心）—— JavaScript]]></title><link>https://blog.youkuaiyun.com/ySFRaabbcc/article/details/110817084</link><guid>https://blog.youkuaiyun.com/ySFRaabbcc/article/details/110817084</guid><author>ySFRaabbcc</author><pubDate>Mon, 07 Dec 2020 13:53:28 +0800</pubDate><description><![CDATA[题链接：https://leetcode-cn.com/problems/jump-game/

题描述：



解题思路：

对于位置 i 上的元素，它可以跳跃到的最远位置为 i + nums[i]，如果某个元素跳跃的最远位置超出或等于数组末尾的位置则返回 true。

即，我们依次遍历数组元素，并实时维护一个最远位置，对于当前遍历元素，如果该元素在最远位置内，则代表该元素是可到达的。

代码实现：


/**
 * @param {number[]} nums
 * @return {boolean}
]]></description><category></category></item><item><title><![CDATA[LeetCode 198. 打家劫舍 （动态规划 + 优化）—— JavaScript]]></title><link>https://blog.youkuaiyun.com/ySFRaabbcc/article/details/110731138</link><guid>https://blog.youkuaiyun.com/ySFRaabbcc/article/details/110731138</guid><author>ySFRaabbcc</author><pubDate>Sun, 06 Dec 2020 10:19:03 +0800</pubDate><description><![CDATA[题链接：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[] 中的最大值即可。根据以上，我们写出第一版代码：

代码实现（第一版）：


/**
 *]]></description><category></category></item><item><title><![CDATA[LeetCode 42. 接雨水（双指针 + 优化）—— JavaScript]]></title><link>https://blog.youkuaiyun.com/ySFRaabbcc/article/details/110678545</link><guid>https://blog.youkuaiyun.com/ySFRaabbcc/article/details/110678545</guid><author>ySFRaabbcc</author><pubDate>Sat, 05 Dec 2020 11:40:01 +0800</pubDate><description><![CDATA[题链接：https://leetcode-cn.com/problems/trapping-rain-water/

题描述：



解题思路（初始版）:

水能达到的最高位置为两边最大高度的较小值减去当前高度的值。

对于数组中的每个元素，通过遍历数组，使用 left_max 保存当前元素左边的最大值，right_max 保存右边的最大值，然后用两者的较小值减去当前高度并累积到结果中。

根据这个思路，我们写出初始版代码：

代码实现（初始版）：


/**
 * @param {number[]} he]]></description><category></category></item><item><title><![CDATA[LeetCode 35. 搜索插入位置（二分查找）—— JavaScript]]></title><link>https://blog.youkuaiyun.com/ySFRaabbcc/article/details/110671850</link><guid>https://blog.youkuaiyun.com/ySFRaabbcc/article/details/110671850</guid><author>ySFRaabbcc</author><pubDate>Fri, 04 Dec 2020 20:01:18 +0800</pubDate><description><![CDATA[题链接：https://leetcode-cn.com/problems/search-insert-position/

题描述：



解题思路：

对于查找索引，用正常的二分查找即可。

对于查找插入位置，在二分查找的时候，记录第一个大于该元素的元素下标即可。

代码实现：


/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number}
 */
var searchInsert = function(nums,]]></description><category></category></item><item><title><![CDATA[LeetCode 14. 最长公共前缀（纵向扫描）—— JavaScript]]></title><link>https://blog.youkuaiyun.com/ySFRaabbcc/article/details/110593428</link><guid>https://blog.youkuaiyun.com/ySFRaabbcc/article/details/110593428</guid><author>ySFRaabbcc</author><pubDate>Thu, 03 Dec 2020 23:23:46 +0800</pubDate><description><![CDATA[题链接：https://leetcode-cn.com/problems/longest-common-prefix/

题描述：



解题思路：

从前往后遍历每个字符串的每一列，比较相同列上的字符是否相同，如果相同则遍历下一列，不相同则表示当前列前面的部分为最长公共前缀。

代码实现：


/**
 * @param {string[]} strs
 * @return {string}
 */
var longestCommonPrefix = function(strs) {
    if (st]]></description><category></category></item><item><title><![CDATA[LeetCode 3. 无重复字符的最长字串（滑动窗口）—— JavaScript]]></title><link>https://blog.youkuaiyun.com/ySFRaabbcc/article/details/110490775</link><guid>https://blog.youkuaiyun.com/ySFRaabbcc/article/details/110490775</guid><author>ySFRaabbcc</author><pubDate>Wed, 02 Dec 2020 17:07:00 +0800</pubDate><description><![CDATA[题链接：https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/

题描述：





解题思路：

使用两个指针表示不重复子串的左右边界，i 表示左边界，right 表示右边界，set 用来存储不重复子串。

i 是当前不重复子串的起始位置，从 right 开始向后遍历，直到字符重复为止，这一段就是从 i 开始的不重复子串，那么下一次从 i + 1 开始遍历时，i + 1 到 right 这一段仍然是不]]></description><category></category></item><item><title><![CDATA[LeetCode 剑指 Offer 53 - I. 在排序数组中查找数字 I（二分查找）—— JavaScript]]></title><link>https://blog.youkuaiyun.com/ySFRaabbcc/article/details/110305797</link><guid>https://blog.youkuaiyun.com/ySFRaabbcc/article/details/110305797</guid><author>ySFRaabbcc</author><pubDate>Sun, 29 Nov 2020 10:10:05 +0800</pubDate><description><![CDATA[题链接：https://leetcode-cn.com/problems/zai-pai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcof/

题描述：



解题思路：

使用两次二分查找左右边界，数字出现次数即为 right - left - 1。

代码实现：


/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number}
 */
var search = function(nums, ]]></description><category></category></item><item><title><![CDATA[LeetCode 剑指 Offfer 59 - II. 队列的最大值（辅助队列）—— JavaScript]]></title><link>https://blog.youkuaiyun.com/ySFRaabbcc/article/details/110289020</link><guid>https://blog.youkuaiyun.com/ySFRaabbcc/article/details/110289020</guid><author>ySFRaabbcc</author><pubDate>Sat, 28 Nov 2020 18:33:12 +0800</pubDate><description><![CDATA[题链接：https://leetcode-cn.com/problems/dui-lie-de-zui-da-zhi-lcof/

类似题：栈的最小值（辅助栈）

题描述：



解题思路：

利用 numQueue 保存输入的变量，利用辅助队列 assQueue 维护一个递减队列，队首存放 numQueue 中的最大值。

（1）max_value：

 如果队列为空，返回 -1，否则返回 assQueue 队首元素。

（2）push_back：

 当一个新的元素 T 要进入 numQueue 时..]]></description><category></category></item><item><title><![CDATA[LeetCode 剑指 Offer 14- I. 减绳子（动态规划）—— JavaScript]]></title><link>https://blog.youkuaiyun.com/ySFRaabbcc/article/details/110151686</link><guid>https://blog.youkuaiyun.com/ySFRaabbcc/article/details/110151686</guid><author>ySFRaabbcc</author><pubDate>Thu, 26 Nov 2020 00:10:40 +0800</pubDate><description><![CDATA[题链接：https://leetcode-cn.com/problems/jian-sheng-zi-lcof/

题描述：



解题思路：

当绳子长度为 2 或 3 时，直接返回 n -1：

2 = 1 + 1 = 1 * 1 = 1，3 = 1 + 2 = 1 * 2 = 2。

当绳子长度大于等于4时，利用数组 dp 保存当前绳子的最大乘积，即 dp[i] 表示长度为 i 的绳子拆分的最大乘积。

代码实现：


/**
 * @param {number} n
 * @return {num.]]></description><category></category></item><item><title><![CDATA[LeetCode 剑指 Offer 45. 把数组排成最小的数—— JavaScript]]></title><link>https://blog.youkuaiyun.com/ySFRaabbcc/article/details/110069659</link><guid>https://blog.youkuaiyun.com/ySFRaabbcc/article/details/110069659</guid><author>ySFRaabbcc</author><pubDate>Tue, 24 Nov 2020 13:15:37 +0800</pubDate><description><![CDATA[题链接：https://leetcode-cn.com/problems/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/

题描述：



解题思路：

对于两个字符串 a 和 b，如果 a + b &gt; b + a，则 b 应该放在 a 前面。例如：

a = "3"，b = "30"，a + b == "330" &gt; b + a == "303"，所以在最后拼接的字符串中，b 必然在 a 的前面，利用这一点，我们可以将数组转换为字符串数组后进行排序，最后返回]]></description><category></category></item><item><title><![CDATA[LeetCode 剑指 Offer 41. 数据流中的中位数—— JavaScript]]></title><link>https://blog.youkuaiyun.com/ySFRaabbcc/article/details/109984099</link><guid>https://blog.youkuaiyun.com/ySFRaabbcc/article/details/109984099</guid><author>ySFRaabbcc</author><pubDate>Mon, 23 Nov 2020 09:59:30 +0800</pubDate><description><![CDATA[题链接：https://leetcode-cn.com/problems/shu-ju-liu-zhong-de-zhong-wei-shu-lcof/
题描述：
解题思路：
利用数组存储数据并排序。
addNum()：
（1）找出添加的数据在数组中合适的位置
（2）插入该数据
findMedian()：
（1）如果数组长度为奇数，中位数等于数组中间的元素
（2）如果为偶数，则为中间两个数的平均值
代码实现：
function(){
     
}
     

...]]></description><category></category></item><item><title><![CDATA[LeetCode 剑指 Offer 30. 包含 min 函数的栈（辅助栈）—— JavaScript]]></title><link>https://blog.youkuaiyun.com/ySFRaabbcc/article/details/109967642</link><guid>https://blog.youkuaiyun.com/ySFRaabbcc/article/details/109967642</guid><author>ySFRaabbcc</author><pubDate>Mon, 23 Nov 2020 00:08:58 +0800</pubDate><description><![CDATA[题链接：https://leetcode-cn.com/problems/bao-han-minhan-shu-de-zhan-lcof/
题描述：

解题思路：
栈 A 用于正常存储所有元素，栈 B 用于存储最小元素。
代码实现


]]></description><category></category></item></channel></rss>