<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[JellyFishDing的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/JellyFishDing</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; JellyFishDing]]></copyright><item><title><![CDATA[【博客搬迁】]]></title><link>https://blog.youkuaiyun.com/JellyFishDing/article/details/109050315</link><guid>https://blog.youkuaiyun.com/JellyFishDing/article/details/109050315</guid><author>JellyFishDing</author><pubDate>Tue, 13 Oct 2020 14:24:57 +0800</pubDate><description><![CDATA[以后在自己这里玩啦：
https://jellyfishding.github.io/

]]></description><category></category></item><item><title><![CDATA[【LeetCode 30天挑战活动】Day 21. Leftmost Column with at Least a One]]></title><link>https://blog.youkuaiyun.com/JellyFishDing/article/details/105686392</link><guid>https://blog.youkuaiyun.com/JellyFishDing/article/details/105686392</guid><author>JellyFishDing</author><pubDate>Wed, 22 Apr 2020 17:18:53 +0800</pubDate><description><![CDATA[题目描述

有一个自定义的01矩阵（即里面的元素非0即1），矩阵的每一行都是非倒序的
目的是找到第一个出现’1’的列，返回这个列值，如果没有（即元素全为0），就返回-1
限制：
You can’t access the Binary Matrix directly.  You may only access the matrix using a BinaryMatrix interface:
Bi...]]></description><category></category></item><item><title><![CDATA[【LeetCode 30天挑战活动】Day 20. Construct Binary Search Tree from Preorder Traversal]]></title><link>https://blog.youkuaiyun.com/JellyFishDing/article/details/105680064</link><guid>https://blog.youkuaiyun.com/JellyFishDing/article/details/105680064</guid><author>JellyFishDing</author><pubDate>Wed, 22 Apr 2020 15:16:07 +0800</pubDate><description><![CDATA[题目描述

根据给定的二叉搜索树的先根遍历，把二叉搜索树建立起来，返回它的根

由于涉及到二叉树，光用文字描述可能会不好理解，可以点击直接看题目
解题思路
这道题最关键的是要充分利用二叉搜索树的特点。
先明确一下二叉搜索树的概念：

若它的左子树不空，则左子树上所有结点的值均小于它的根结点的值； 若它的右子树不空，则右子树上所有结点的值均大于它的根结点的值

我们对照一棵二叉搜索树的先根遍历数组来...]]></description><category></category></item><item><title><![CDATA[【LeetCode 30天挑战活动】Day 19. Search in Rotated Sorted Array]]></title><link>https://blog.youkuaiyun.com/JellyFishDing/article/details/105670275</link><guid>https://blog.youkuaiyun.com/JellyFishDing/article/details/105670275</guid><author>JellyFishDing</author><pubDate>Tue, 21 Apr 2020 23:16:32 +0800</pubDate><description><![CDATA[题目描述

假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如，数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值，如果数组中存在这个目标值，则返回它的索引，否则返回 -1。
示例：
Input: nums = [4,5,6,7,0,1,2], target = 0
Output: 4
Input: nums = [4,5,6,7,...]]></description><category></category></item><item><title><![CDATA[【LeetCode 30天挑战活动】Day 18.Minimum Path Sum]]></title><link>https://blog.youkuaiyun.com/JellyFishDing/article/details/105651913</link><guid>https://blog.youkuaiyun.com/JellyFishDing/article/details/105651913</guid><author>JellyFishDing</author><pubDate>Tue, 21 Apr 2020 21:31:10 +0800</pubDate><description><![CDATA[题目描述

给定一个二维数组，数组中的元素都是非负整数，找到从左上角到右下角的一条路径使得路径之和最小，返回这个最小路径和。
注意：每次只能向下或者向右移动
示例：
Input:
[
[1,3,1],
[1,5,1],
[4,2,1]
]
Output: 7
Explanation: Because the path 1→3→1→1→1 minimizes the sum.

解题思路
法一： 回...]]></description><category></category></item><item><title><![CDATA[【LeetCode 30天挑战活动】Day 17. Number of Islands]]></title><link>https://blog.youkuaiyun.com/JellyFishDing/article/details/105646151</link><guid>https://blog.youkuaiyun.com/JellyFishDing/article/details/105646151</guid><author>JellyFishDing</author><pubDate>Mon, 20 Apr 2020 22:13:33 +0800</pubDate><description><![CDATA[昨天网不好，今天补上
题目描述

Given a 2d grid map of '1’s (land) and '0’s (water), count the number of islands. An island is surrounded by water and is formed by connecting adjacent lands horizontally or verticall...]]></description><category></category></item><item><title><![CDATA[【LeetCode 30天挑战活动】Day 16. Valid Parenthesis String]]></title><link>https://blog.youkuaiyun.com/JellyFishDing/article/details/105612146</link><guid>https://blog.youkuaiyun.com/JellyFishDing/article/details/105612146</guid><author>JellyFishDing</author><pubDate>Sun, 19 Apr 2020 14:11:23 +0800</pubDate><description><![CDATA[阴间作业和阴间小学期害人不浅: (
题目描述
（我太懒了就直接复制原题了）

Given a string containing only three types of characters: ‘(’, ‘)’ and ‘*’, write a function to check whether this string is valid. We define the validity of a s...]]></description><category></category></item><item><title><![CDATA[【LeetCode 30天挑战活动】Day 15. Product of Array Except Self]]></title><link>https://blog.youkuaiyun.com/JellyFishDing/article/details/105542135</link><guid>https://blog.youkuaiyun.com/JellyFishDing/article/details/105542135</guid><author>JellyFishDing</author><pubDate>Wed, 15 Apr 2020 19:13:20 +0800</pubDate><description><![CDATA[题目描述

计算数组中除自身之外的其他元素的乘积。
示例：
Input:  [1,2,3,4]
Output: [24,12,8,6]
要求：
（1）不使用除法
（2）时间复杂度为O(n)
（3）除最后返回的数组外，空间复杂度为O(1)

解题思路
不符合题意的两个方法

使用除法。首先计算出所有元素的总乘积，然后对于每个位置，都除以这个位置的元素，得到的就是除自身外其它元素的乘积。但是这个方法中...]]></description><category></category></item><item><title><![CDATA[【LeetCode 30天挑战活动】Day 14.Perform String Shifts]]></title><link>https://blog.youkuaiyun.com/JellyFishDing/article/details/105531139</link><guid>https://blog.youkuaiyun.com/JellyFishDing/article/details/105531139</guid><author>JellyFishDing</author><pubDate>Wed, 15 Apr 2020 11:46:35 +0800</pubDate><description><![CDATA[题目描述

给定字符串s和二维数组shift，其中，shift数组指示对字符串s进行的字符移动操作。
shift[i] = [direction, amount]
direction：0为向左移动，1为向右移动
amount：移动次数
示例：
Input: s = “abc”, shift = [[0,1],[1,2]]
Output: “cab”
Explanation:
[0,1] means...]]></description><category></category></item><item><title><![CDATA[【LeetCode 30天挑战活动】Day 13. Contiguous Array]]></title><link>https://blog.youkuaiyun.com/JellyFishDing/article/details/105529467</link><guid>https://blog.youkuaiyun.com/JellyFishDing/article/details/105529467</guid><author>JellyFishDing</author><pubDate>Wed, 15 Apr 2020 10:55:08 +0800</pubDate><description><![CDATA[题目描述

给定一个二进制数组, 找到含有相同数量的 0 和 1 的最长连续子数组（的长度）。
示例：
输入: [0,1,0]
输出: 2
说明: [0, 1] (或 [1, 0]) 是具有相同数量0和1的最长连续子数组。

解题思路
暴力法是第一反应且非常直观，但毕竟不到万不得已最好是不要用暴力法，于是开始思考有没有更好的解决方案。
这种找最长子数组的题很多可以使用滑动窗口，但这题比较特殊，因为...]]></description><category></category></item><item><title><![CDATA[【LeetCode 30天挑战活动】Day 12. Last Stone Weight]]></title><link>https://blog.youkuaiyun.com/JellyFishDing/article/details/105522379</link><guid>https://blog.youkuaiyun.com/JellyFishDing/article/details/105522379</guid><author>JellyFishDing</author><pubDate>Tue, 14 Apr 2020 22:16:46 +0800</pubDate><description><![CDATA[谁能想到我今天才做day12的题呢
小说误国！！小说误国啊！！！（痛心！！
题目描述（来自力扣）

有一堆石头，每块石头的重量都是正整数。
每一回合，从中选出两块 最重的 石头，然后将它们一起粉碎。假设石头的重量分别为 x 和 y，且 x &lt;= y。那么粉碎的可能结果如下：
如果 x == y，那么两块石头都会被完全粉碎；
如果 x != y，那么重量为 x 的石头将会完全粉碎，而重量为 y...]]></description><category></category></item><item><title><![CDATA[【LeetCode 30天挑战活动】Day 11. Diameter of Binary Tree]]></title><link>https://blog.youkuaiyun.com/JellyFishDing/article/details/105461133</link><guid>https://blog.youkuaiyun.com/JellyFishDing/article/details/105461133</guid><author>JellyFishDing</author><pubDate>Sat, 11 Apr 2020 22:36:17 +0800</pubDate><description><![CDATA[题目描述

计算一棵二叉树的直径。
对于直径的定义：二叉树中任意两个节点之间的最长路径，这个路径可能不通过根节点root

示例：如下二叉树的直径是3, 有两条路径，[4,2,1,3] 或者 [5,2,1,3]
          1
         / \
        2   3
       / \     
      4   5    

解题思路
因为一向不是太擅长做二叉树的题，所...]]></description><category></category></item><item><title><![CDATA[【Leetcode 30天挑战活动】Day 10. Min Stack]]></title><link>https://blog.youkuaiyun.com/JellyFishDing/article/details/105452454</link><guid>https://blog.youkuaiyun.com/JellyFishDing/article/details/105452454</guid><author>JellyFishDing</author><pubDate>Sat, 11 Apr 2020 20:14:22 +0800</pubDate><description><![CDATA[害，昨天犯懒，一晚上没学习，就没做（爬
今天补上
题目描述

设计一个最小栈，可以完成栈最基本的push、pop、top功能，除此之外要实现一个getMin方法，在常数时间内得到当前栈中的最小值

解题思路
（1）一个不符合题目要求的做法：使用List结构来模拟栈的操作，push即加入list，pop和top则是操作list的最后一个元素，getMin则需要对list进行一个遍历操作找到最小值。由...]]></description><category></category></item><item><title><![CDATA[【力扣每日一题】Day 2. 翻转字符串里的单词]]></title><link>https://blog.youkuaiyun.com/JellyFishDing/article/details/105436583</link><guid>https://blog.youkuaiyun.com/JellyFishDing/article/details/105436583</guid><author>JellyFishDing</author><pubDate>Fri, 10 Apr 2020 16:36:48 +0800</pubDate><description><![CDATA[题目描述

给定一个字符串，逐个翻转字符串中的每个单词。
说明：
无空格字符构成一个单词。
输入字符串可以在前面或者后面包含多余的空格，但是反转后的字符不能包括。
如果两个单词间有多余的空格，将反转后单词间的空格减少到只含一个。
示例：
输入: "   a good   example  "
输出: “example good a”

解题思路
我是一个无情的api选手（酷
使用空格将字符串分隔开...]]></description><category></category></item><item><title><![CDATA[【LeetCode 30天挑战活动】Day 9.Backspace String Compare]]></title><link>https://blog.youkuaiyun.com/JellyFishDing/article/details/105416702</link><guid>https://blog.youkuaiyun.com/JellyFishDing/article/details/105416702</guid><author>JellyFishDing</author><pubDate>Thu, 09 Apr 2020 20:16:37 +0800</pubDate><description><![CDATA[题目描述

给定 S 和 T 两个字符串，当它们分别被输入到空白的文本编辑器后，判断二者是否相等，并返回结果。 # 代表退格字符。
示例：
输入：S = “a##c”, T = “##a#c”
输出：true
解释：S 和 T 都会变成 “c”。
考虑如何使得空间复杂度为O(1)

解题思路
法一： 直观地，遍历两个字符串，按照退格的限制生成各自最终的字符串并比较，时间复杂度O(M + N)，空间...]]></description><category></category></item><item><title><![CDATA[【LeetCode 30天挑战活动】Day 8. Middle of the Linked List]]></title><link>https://blog.youkuaiyun.com/JellyFishDing/article/details/105406437</link><guid>https://blog.youkuaiyun.com/JellyFishDing/article/details/105406437</guid><author>JellyFishDing</author><pubDate>Thu, 09 Apr 2020 15:47:59 +0800</pubDate><description><![CDATA[题目描述

找到一个链表的中间节点
如果中间节点有两个，取右边的那个

解法
核心思想：快慢指针找中点
使用两个指针，慢指针每次前进一个节点，快指针每次前进两个节点，当快指针指向链表末尾时，慢指针正好指向中点
（之前有一个快慢指针找循环，这里有一个快慢指针找中点，快慢指针可真好用）
code如下：
class Solution {
    public ListNode middleNode(Li...]]></description><category></category></item><item><title><![CDATA[【力扣每日一题】Day 1. 括号生成]]></title><link>https://blog.youkuaiyun.com/JellyFishDing/article/details/105404959</link><guid>https://blog.youkuaiyun.com/JellyFishDing/article/details/105404959</guid><author>JellyFishDing</author><pubDate>Thu, 09 Apr 2020 11:09:49 +0800</pubDate><description><![CDATA[最近力扣在搞每日一题活动，正好我也需要多练一练JavaScript，所以就打算用js来做力扣的每日一题，并且每天在博客记录一下。
LeetCode那边也会继续做，不过那边就是用Java写（目前比较贪心，打算js和Java两手抓，不说学得多精，但至少做题时得两个都会用
题目描述

数字 n 代表生成括号的对数，请你设计一个函数，用于能够生成所有可能的并且 有效的 括号组合。
示例：
输入：n = 3...]]></description><category></category></item><item><title><![CDATA[【LeetCode 30天挑战活动】Day 7. Counting Elements]]></title><link>https://blog.youkuaiyun.com/JellyFishDing/article/details/105393140</link><guid>https://blog.youkuaiyun.com/JellyFishDing/article/details/105393140</guid><author>JellyFishDing</author><pubDate>Wed, 08 Apr 2020 17:47:49 +0800</pubDate><description><![CDATA[题目描述

给定一个整数数组，计算x+1也在数组内的元素x的个数
相同元素分开来算

思路
比较容易想到的是额外使用一个hashset，在对数组进行遍历的同时，判断x+1是否在已出现过的数组元素中，如果不在，将x保存在set中
不知道算不算一个小技巧，将数组排序过后，从后往前，也就是按照降序去遍历会让这道题变得非常简单
总结一下步骤就是：

对数组进行排序
按照降序的顺序对数组进行遍历，每次得到元...]]></description><category></category></item><item><title><![CDATA[【LeetCode 30天挑战活动】Day 6. Group Anagrams]]></title><link>https://blog.youkuaiyun.com/JellyFishDing/article/details/105363811</link><guid>https://blog.youkuaiyun.com/JellyFishDing/article/details/105363811</guid><author>JellyFishDing</author><pubDate>Tue, 07 Apr 2020 14:25:20 +0800</pubDate><description><![CDATA[题目描述（来自力扣）

给定一个字符串数组，将字母异位词组合在一起。字母异位词指字母相同，但排列不同的字符串。
示例:
输入: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”],
输出:
[
[“ate”,“eat”,“tea”],
[“nat”,“tan”],
[“bat”]
]
说明：
所有输入均为小写字母。
不考虑答案输出的顺序。

解法
最关键的是找到一...]]></description><category></category></item><item><title><![CDATA[【LeetCode 30天挑战活动】Day 5. Best Time to Buy and Sell Stock II]]></title><link>https://blog.youkuaiyun.com/JellyFishDing/article/details/105338443</link><guid>https://blog.youkuaiyun.com/JellyFishDing/article/details/105338443</guid><author>JellyFishDing</author><pubDate>Mon, 06 Apr 2020 09:39:57 +0800</pubDate><description><![CDATA[题目描述（来自力扣）

给定一个数组，它的第 i 个元素是一支给定股票第 i 天的价格。
设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易（多次买卖一支股票）。
注意：你不能同时参与多笔交易（你必须在再次购买前出售掉之前的股票）。
示例：
输入: [7,1,5,3,6,4]
输出: 7
解释: 在第 2 天（股票价格 = 1）的时候买入，在第 3 天（股票价格 = 5）的时候卖...]]></description><category></category></item></channel></rss>