<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Rabbit-Sir的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_45062721</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_45062721]]></copyright><item><title><![CDATA[Leetcode 27 移除元素 26. 删除有序数组中的重复项 代码逐行讲解]]></title><link>https://blog.youkuaiyun.com/qq_45062721/article/details/131988170</link><guid>https://blog.youkuaiyun.com/qq_45062721/article/details/131988170</guid><author>qq_45062721</author><pubDate>Fri, 28 Jul 2023 22:13:44 +0800</pubDate><description><![CDATA[例如，函数返回的新长度为 2 ，而 nums = [2,2,3,3] 或 nums = [2,2,0,0]，也会被视作正确答案。解释：函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。但是由于数组是连续的，所以我们此时只能将数组的内容进行覆盖，将当前下标后面的所有的数据进行前移，将。后面所有的值前移一个。// 根据你的函数返回的长度, 它会打印出数组中 该长度范围内 的所有元素。输入：nums = [0,1,2,2,3,0,4,2], val = 2。]]></description><category></category></item><item><title><![CDATA[100. 相同的树]]></title><link>https://blog.youkuaiyun.com/qq_45062721/article/details/107871167</link><guid>https://blog.youkuaiyun.com/qq_45062721/article/details/107871167</guid><author>qq_45062721</author><pubDate>Fri, 07 Aug 2020 21:49:31 +0800</pubDate><description><![CDATA[package LeetCode.OneToFiveHundred;

import LeetCode.TreeNode;

public class OneHundred {
    public boolean isSameTree(TreeNode p, TreeNode q) {
        if (p == null &amp;&amp; q == null)
            return true;
        if (p == null || q == null)
      ]]></description><category></category></item><item><title><![CDATA[337. 打家劫舍 III（逐句解释代码）]]></title><link>https://blog.youkuaiyun.com/qq_45062721/article/details/107826103</link><guid>https://blog.youkuaiyun.com/qq_45062721/article/details/107826103</guid><author>qq_45062721</author><pubDate>Wed, 05 Aug 2020 21:51:04 +0800</pubDate><description><![CDATA[package LeetCode.OneToFiveHundred;

import LeetCode.TreeNode;

import java.util.HashMap;

public class ThreeHundredsAndThirtySeven {
    public int rob(TreeNode root) {
        HashMap&lt;TreeNode, Integer&gt; hashMap = new HashMap&lt;&gt;();
        retur]]></description><category></category></item><item><title><![CDATA[415. 字符串相加（逐句解释代码）]]></title><link>https://blog.youkuaiyun.com/qq_45062721/article/details/107773433</link><guid>https://blog.youkuaiyun.com/qq_45062721/article/details/107773433</guid><author>qq_45062721</author><pubDate>Mon, 03 Aug 2020 21:03:32 +0800</pubDate><description><![CDATA[package LeetCode.OneToFiveHundred;

public class FourHundredsAndFourteen {
    public String addStrings(String num1, String num2) {
        // 用 StringBuffer 方便操作
        StringBuffer sb = new StringBuffer("");
        // 用双指针，根据加法法则，我们从后往前加，从 carry 来保存进位
]]></description><category></category></item><item><title><![CDATA[114. 二叉树展开为链表（逐句解释代码）]]></title><link>https://blog.youkuaiyun.com/qq_45062721/article/details/107751759</link><guid>https://blog.youkuaiyun.com/qq_45062721/article/details/107751759</guid><author>qq_45062721</author><pubDate>Sun, 02 Aug 2020 21:31:50 +0800</pubDate><description><![CDATA[package LeetCode.OneToFiveHundred;

import LeetCode.TreeNode;

import java.util.ArrayList;
import java.util.List;

public class OneHundredAndFourteen {
    private List&lt;TreeNode&gt; ans = new ArrayList&lt;&gt;();
    public void flatten(TreeNode root) {]]></description><category></category></item><item><title><![CDATA[面试题 08.03. 魔术索引（逐句解释代码）]]></title><link>https://blog.youkuaiyun.com/qq_45062721/article/details/107721722</link><guid>https://blog.youkuaiyun.com/qq_45062721/article/details/107721722</guid><author>qq_45062721</author><pubDate>Fri, 31 Jul 2020 21:23:48 +0800</pubDate><description><![CDATA[package LeetCode.面试题;

public class FindMagicIndex {
    public int findMagicIndex(int[] nums) {
        return helper(nums,0,nums.length - 1);
    }
    private int helper(int[] nums, int left, int right){
        // 前提条件
        if (left &gt; right) retu]]></description><category></category></item><item><title><![CDATA[104. 二叉树的最大深度（逐句解释代码）]]></title><link>https://blog.youkuaiyun.com/qq_45062721/article/details/107644065</link><guid>https://blog.youkuaiyun.com/qq_45062721/article/details/107644065</guid><author>qq_45062721</author><pubDate>Tue, 28 Jul 2020 20:08:24 +0800</pubDate><description><![CDATA[今天的没啥说的
    public int maxDepth(TreeNode root) {
        if (root == null)
            return 0;
        else {
            // 直接进行递归，找到左右中最大的返回
            int left = maxDepth(root.left);
            int right = maxDepth(root.right);
            return Ma]]></description><category></category></item><item><title><![CDATA[410. 分割数组的最大值（逐句解释代码）]]></title><link>https://blog.youkuaiyun.com/qq_45062721/article/details/107586556</link><guid>https://blog.youkuaiyun.com/qq_45062721/article/details/107586556</guid><author>qq_45062721</author><pubDate>Sat, 25 Jul 2020 22:50:41 +0800</pubDate><description><![CDATA[package LeetCode.OneToFiveHundred;

import java.util.Arrays;

public class FourHundredsAndForty {
    // dp
    public int splitArray(int[] nums, int m) {
        int len = nums.length;
        // 存储每次最小值
        int[][] dp = new int[len + 1][m + 1];
     ]]></description><category></category></item><item><title><![CDATA[1025. 除数博弈（逐句解释代码）]]></title><link>https://blog.youkuaiyun.com/qq_45062721/article/details/107571516</link><guid>https://blog.youkuaiyun.com/qq_45062721/article/details/107571516</guid><author>qq_45062721</author><pubDate>Fri, 24 Jul 2020 23:15:07 +0800</pubDate><description><![CDATA[package LeetCode.OneThousandMore;

public class OneThousandAndTwentyFive {
    public boolean divisorGame(int n) {
        // 用dp
        boolean[] dp = new boolean[n + 1];
        // 因为先手 0 和 1 必输，没有选择
        dp[0] = dp[1] = false;
        // 进行遍历，寻找可以赢的]]></description><category></category></item><item><title><![CDATA[64. 最小路径和（逐句解释代码）]]></title><link>https://blog.youkuaiyun.com/qq_45062721/article/details/107548887</link><guid>https://blog.youkuaiyun.com/qq_45062721/article/details/107548887</guid><author>qq_45062721</author><pubDate>Thu, 23 Jul 2020 21:50:53 +0800</pubDate><description><![CDATA[package LeetCode.OneToFiveHundred;

public class SixtyFour {
    // 记忆答案
    private int[][] ans;
    public int minPathSum(int[][] grid) {
        int m = grid.length, n = grid[0].length;
        ans = new int[m][n];
        // 进行搜索
        return dfs(gri]]></description><category></category></item><item><title><![CDATA[剑指 Offer 11. 旋转数组的最小数字(逐句解释代码）]]></title><link>https://blog.youkuaiyun.com/qq_45062721/article/details/107524702</link><guid>https://blog.youkuaiyun.com/qq_45062721/article/details/107524702</guid><author>qq_45062721</author><pubDate>Wed, 22 Jul 2020 22:11:00 +0800</pubDate><description><![CDATA[package LeetCode.剑指offer;

public class MinArray {
    public int minArray(int[] numbers) {
        int start = 0, end = numbers.length - 1;
        while (start &lt; end){
            // 防止除法运算出错
            int mid = (end - start) / 2 + start;
          ]]></description><category></category></item><item><title><![CDATA[95. 不同的二叉搜索树 II（逐句解释代码）]]></title><link>https://blog.youkuaiyun.com/qq_45062721/article/details/107499531</link><guid>https://blog.youkuaiyun.com/qq_45062721/article/details/107499531</guid><author>qq_45062721</author><pubDate>Tue, 21 Jul 2020 21:38:45 +0800</pubDate><description><![CDATA[package LeetCode.OneToFiveHundred;

import LeetCode.TreeNode;

import java.util.LinkedList;
import java.util.List;

public class NinetyFive {
    public List&lt;TreeNode&gt; generateTrees(int n) {
        if (n == 0) return new LinkedList&lt;TreeNode&gt;()]]></description><category></category></item><item><title><![CDATA[167. 两数之和 II - 输入有序数组(逐句解释代码）]]></title><link>https://blog.youkuaiyun.com/qq_45062721/article/details/107475764</link><guid>https://blog.youkuaiyun.com/qq_45062721/article/details/107475764</guid><author>qq_45062721</author><pubDate>Mon, 20 Jul 2020 22:17:33 +0800</pubDate><description><![CDATA[package LeetCode.OneToFiveHundred;

public class OneHundredAndSixtySeven {
    public int[] twoSum(int[] numbers, int target) {
        int len = numbers.length;
        if (len == 0) return new int[]{-1, -1};
        for (int i = 0; i &lt; len; i++){
    ]]></description><category></category></item><item><title><![CDATA[35. 搜索插入位置（逐句解释代码）]]></title><link>https://blog.youkuaiyun.com/qq_45062721/article/details/107418971</link><guid>https://blog.youkuaiyun.com/qq_45062721/article/details/107418971</guid><author>qq_45062721</author><pubDate>Fri, 17 Jul 2020 22:10:01 +0800</pubDate><description><![CDATA[package LeetCode.OneToFiveHundred;

import java.util.Arrays;

public class ThirtyFive {
    public int searchInsert(int[] nums, int target) {
        int len = nums.length;
        if (len == 0) return 0;
        // 可以进行查找，如果有的话，直接就返回能节省时间
        int temp]]></description><category></category></item><item><title><![CDATA[96.不同的二叉搜索树（逐句解释代码）]]></title><link>https://blog.youkuaiyun.com/qq_45062721/article/details/107366355</link><guid>https://blog.youkuaiyun.com/qq_45062721/article/details/107366355</guid><author>qq_45062721</author><pubDate>Wed, 15 Jul 2020 17:26:52 +0800</pubDate><description><![CDATA[public int numTrees(int n) {
        // 每个节点都可能做跟，所以有 n 种可能
        // 当每个节点做跟的时候，左边共有 1 - i 个节点，右边共有 n - i 个节点
        int[] dp = new int[n + 1];
        // 边界处理，我们已知当 n 等于0或1的时候只有一种情况
        dp[0] = 1;
        dp[1] = 1;
        // 状态转换方程为 f[i] += f...]]></description><category></category></item><item><title><![CDATA[350. 两个数组的交集 II（逐句解释代码）]]></title><link>https://blog.youkuaiyun.com/qq_45062721/article/details/107326661</link><guid>https://blog.youkuaiyun.com/qq_45062721/article/details/107326661</guid><author>qq_45062721</author><pubDate>Mon, 13 Jul 2020 22:23:07 +0800</pubDate><description><![CDATA[package LeetCode.OneToFiveHundred;

import java.util.Arrays;

public class ThreeHundredsAndFifty {
    public int[] intersect(int[] nums1, int[] nums2) {
        int m = nums1.length, n = nums2.length;
        // 为空的情况
        if (m == 0 || n == 0) return ]]></description><category></category></item><item><title><![CDATA[174. 地下城游戏(逐句解释代码）]]></title><link>https://blog.youkuaiyun.com/qq_45062721/article/details/107305799</link><guid>https://blog.youkuaiyun.com/qq_45062721/article/details/107305799</guid><author>qq_45062721</author><pubDate>Sun, 12 Jul 2020 21:30:04 +0800</pubDate><description><![CDATA[package LeetCode.OneToFiveHundred;

public class OneHundredAndSeventhFour {
    // 记忆每次计算之后最小值
    int[][] memo;
    public int calculateMinimumHP(int[][] dungeon) {
        int m = dungeon.length, n = dungeon[0].length;
        memo = new int[m][n];
     ]]></description><category></category></item><item><title><![CDATA[Dijkstra算法图解及其实现（逐句解释代码以及思路）]]></title><link>https://blog.youkuaiyun.com/qq_45062721/article/details/107238060</link><guid>https://blog.youkuaiyun.com/qq_45062721/article/details/107238060</guid><author>qq_45062721</author><pubDate>Thu, 09 Jul 2020 21:26:26 +0800</pubDate><description><![CDATA[图片来源
图解：







先上代码
package study;

public class Dijkstra {
    public int[] getShortestPaths(int[][] adjMatrix){
        int len = adjMatrix.length;
        // 用于存放顶点 o 到其他顶点的最小距离
        int[] result = new int[len];
        // 表示是否遍历过
        boolean[] ]]></description><category></category></item><item><title><![CDATA[面试题 17.13. 恢复空格(逐句解释代码）]]></title><link>https://blog.youkuaiyun.com/qq_45062721/article/details/107232494</link><guid>https://blog.youkuaiyun.com/qq_45062721/article/details/107232494</guid><author>qq_45062721</author><pubDate>Thu, 09 Jul 2020 16:47:08 +0800</pubDate><description><![CDATA[package LeetCode.面试题;

import java.util.HashMap;
import java.util.Map;

public class Respace {
    public int respace(String[] dictionary, String sentence) {
        // 进行暴力寻找，找到字典中所有的能被找到的单词的长度
        int len = sentence.length();
        Map&lt;String, I]]></description><category></category></item><item><title><![CDATA[面试题 16.11. 跳水板（逐句解释代码）]]></title><link>https://blog.youkuaiyun.com/qq_45062721/article/details/107210629</link><guid>https://blog.youkuaiyun.com/qq_45062721/article/details/107210629</guid><author>qq_45062721</author><pubDate>Wed, 08 Jul 2020 17:18:39 +0800</pubDate><description><![CDATA[package LeetCode.面试题;

public class DivingBoard {
    public int[] divingBoard(int shorter, int longer, int k) {
        if (k == 0) return new int[0];
        if (shorter == longer) return new int[]{longer * k};
        // 上面很好解释，一个是不用构建，因为 k 是0，另一个是长短相等，]]></description><category></category></item></channel></rss>