<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[A_long_way_to_go的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/A_long_way_to_go</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; A_long_way_to_go]]></copyright><item><title><![CDATA[JVM基础01（从入门到八股-黑马篇）]]></title><link>https://blog.youkuaiyun.com/A_long_way_to_go/article/details/149183701</link><guid>https://blog.youkuaiyun.com/A_long_way_to_go/article/details/149183701</guid><author>A_long_way_to_go</author><pubDate>Mon, 07 Jul 2025 22:56:58 +0800</pubDate><description><![CDATA[JVM（Java虚拟机）是实现Java&quot;一次编写，到处运行&quot;特性的核心软件，负责将Java字节码（.class文件）翻译成机器指令执行。其主要功能包括：解释执行字节码、自动内存管理（垃圾回收）、即时编译（JIT）优化热点代码。JVM由类加载器、运行时数据区、执行引擎和本地接口等组件构成，分别负责加载类文件、存储对象数据、解释执行字节码以及调用本地方法。作为用C++编写的程序，JVM在操作系统之上运行，是Java语言跨平台特性的关键保障。]]></description><category></category></item><item><title><![CDATA[力扣-hot100(搜索二维矩阵)]]></title><link>https://blog.youkuaiyun.com/A_long_way_to_go/article/details/147759951</link><guid>https://blog.youkuaiyun.com/A_long_way_to_go/article/details/147759951</guid><author>A_long_way_to_go</author><pubDate>Wed, 07 May 2025 14:04:18 +0800</pubDate><description><![CDATA[二分查找，题目强调有序数据，天然的符合二分条件，常规的二分就是取中间点, 然后观察这个点的值与目标值比较是大了还是小了。而这里二维二分，基本思路一样，初始取整个数组的中间坐标，根据得到的点不断更新 x,y 即可。输入：matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 5。每列的所有元素从上到下升序排列。每行的元素从左到右升序排列。每列的元素从上到下升序排列。]]></description><category></category></item><item><title><![CDATA[力扣-hot100(旋转图像)]]></title><link>https://blog.youkuaiyun.com/A_long_way_to_go/article/details/147759624</link><guid>https://blog.youkuaiyun.com/A_long_way_to_go/article/details/147759624</guid><author>A_long_way_to_go</author><pubDate>Wed, 07 May 2025 13:50:27 +0800</pubDate><description><![CDATA[输入：matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]输出：[[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]输入：matrix = [[1,2,3],[4,5,6],[7,8,9]]输出：[[7,4,1],[8,5,2],[9,6,3]]旋转图像，这意味着你需要直接修改输入的二维矩阵。请你将图像顺时针旋转 90 度。// 再按对角线翻转。使用另一个矩阵来旋转图像。]]></description><category></category></item><item><title><![CDATA[力扣-hot100（螺旋矩阵）]]></title><link>https://blog.youkuaiyun.com/A_long_way_to_go/article/details/147759569</link><guid>https://blog.youkuaiyun.com/A_long_way_to_go/article/details/147759569</guid><author>A_long_way_to_go</author><pubDate>Wed, 07 May 2025 13:47:37 +0800</pubDate><description><![CDATA[模拟: 第一个周期：行的第一行，列的倒数第一列，行的倒数第一行，列的第一列；第二个周期：行的第二行，列的倒数第二列，行的倒数第二行，列的第二列.....输入：matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输入：matrix = [[1,2,3],[4,5,6],[7,8,9]]输出：[1,2,3,4,8,12,11,10,9,5,6,7]// 从右到左遍历底部行。// 从下到上遍历左侧列。// 从左到右遍历顶部行。输出：[1,2,3,6,9,8,7,4,5]]]></description><category></category></item><item><title><![CDATA[力扣-hot100 (矩阵置零)]]></title><link>https://blog.youkuaiyun.com/A_long_way_to_go/article/details/147743593</link><guid>https://blog.youkuaiyun.com/A_long_way_to_go/article/details/147743593</guid><author>A_long_way_to_go</author><pubDate>Tue, 06 May 2025 17:14:54 +0800</pubDate><description><![CDATA[/ 为了不破坏原来的结构, 就是被感染成 0 的不能再去感染别的数, 只有初始为0的数才能去感染其它数。// 可进行优化, 因为这里只要把行和列的下标索引记录下来就可以了。输入：matrix = [[0,1,2,0],[3,4,5,2],[1,3,1,5]]输入：matrix = [[1,1,1],[1,0,1],[1,1,1]]输出：[[0,0,0,0],[0,4,5,0],[0,3,1,0]]输出：[[1,0,1],[0,0,0],[1,0,1]]的矩阵，如果一个元素为。]]></description><category></category></item><item><title><![CDATA[力扣-hot100 (缺失的第一个正数)]]></title><link>https://blog.youkuaiyun.com/A_long_way_to_go/article/details/147742878</link><guid>https://blog.youkuaiyun.com/A_long_way_to_go/article/details/147742878</guid><author>A_long_way_to_go</author><pubDate>Tue, 06 May 2025 16:51:18 +0800</pubDate><description><![CDATA[这里将每个遍历到的值都将数组的索引做一个标记 (为了不影响这个数本身的价值,将其标为负数, 用到该数时再取绝对值, 但如果这里原来数组的数本来就是负数呢?这里是要找缺失的第一个正数,负数是没有价值的, 所以我们可以将初始就为负数的数替换为一个特定的数. 为了不影响结果, 这个特定的数是要保证是存在的, 所以我们可以将其替换为 1 ~ n+1 的任何数, 只要在预处理的时候检查他存在, 但题目要求的是需要第一个正数, 故如果选择后面的数会出现漏掉前面较小的数的检查. 所以最小数1是你的不二选择)。]]></description><category></category></item><item><title><![CDATA[力扣hot100 （除自身以外数组的乘积）]]></title><link>https://blog.youkuaiyun.com/A_long_way_to_go/article/details/147722331</link><guid>https://blog.youkuaiyun.com/A_long_way_to_go/article/details/147722331</guid><author>A_long_way_to_go</author><pubDate>Mon, 05 May 2025 20:37:26 +0800</pubDate><description><![CDATA[常规做法是可以开两个数组left[nums.size]、right[nums.size]记录.但仔细观察后可以发现这里每个元素的左右侧乘积是连续的. 也就是第i个元素的左乘积 = 第 i - 1 元素的左乘积 * 第 i - 1个元素, 可使用一个变量记录上一个元素的左乘积得到. 同理可以计算右乘积。// 第i个元素的左乘积 = 第 i - 1 元素的左乘积 * 第 i - 1 个元素。输入: nums = [-1,1,0,-3,3] 输出: [0,0,9,0,0]// 先将所有元素的左乘积给计算出来。]]></description><category></category></item><item><title><![CDATA[力扣hot100 (轮转数组)]]></title><link>https://blog.youkuaiyun.com/A_long_way_to_go/article/details/147721666</link><guid>https://blog.youkuaiyun.com/A_long_way_to_go/article/details/147721666</guid><author>A_long_way_to_go</author><pubDate>Mon, 05 May 2025 19:47:36 +0800</pubDate><description><![CDATA[输入: nums = [1,2,3,4,5,6,7], k = 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右轮转 3 步: [5,6,7,1,2,3,4]输入：nums = [-1,-100,3,99], k = 2 输出：[3,99,-1,-100] 解释: 向右轮转 1 步: [99,-1,-100,3] 向右轮转 2 步: [3,99,-1,-100]// 计算第i个元素存放的位置。]]></description><category></category></item><item><title><![CDATA[力扣hot100 - 合并区间]]></title><link>https://blog.youkuaiyun.com/A_long_way_to_go/article/details/147721331</link><guid>https://blog.youkuaiyun.com/A_long_way_to_go/article/details/147721331</guid><author>A_long_way_to_go</author><pubDate>Mon, 05 May 2025 19:15:22 +0800</pubDate><description><![CDATA[如果小于则 可以进行区间合并 进行第 i - 1 的右区间进行更新 否则开一个加入一个新的区间。输入：intervals = [[1,4],[4,5]] 输出：[[1,5]] 解释：区间 [1,4] 和 [4,5] 可被视为重叠区间。// 如果新加入队列的元素 <= 当前队列中的最后一个元素 -> 则可以进行合并。// 更新其右端点后加入到队列中, 更新的值应该是两个区间右端点的最大值。// 不能合并的情况, 直接将新的元素加入队列中。// 拿到队列中最后一个元素。执行用时分布 7ms 击败 88.71%]]></description><category></category></item><item><title><![CDATA[力扣-hot100(和为k的子数组)]]></title><link>https://blog.youkuaiyun.com/A_long_way_to_go/article/details/147503774</link><guid>https://blog.youkuaiyun.com/A_long_way_to_go/article/details/147503774</guid><author>A_long_way_to_go</author><pubDate>Fri, 25 Apr 2025 11:23:25 +0800</pubDate><description><![CDATA[给你一个整数数组 nums 和一个整数 k ，请你统计并返回 该数组中和为 k 的子数组的个数。输入：nums = [1,2,3], k = 3 输出：2。子数组是数组中元素的连续非空序列。]]></description><category></category></item><item><title><![CDATA[力扣-hot100(找到字符串中的所有字母异位词)]]></title><link>https://blog.youkuaiyun.com/A_long_way_to_go/article/details/147503722</link><guid>https://blog.youkuaiyun.com/A_long_way_to_go/article/details/147503722</guid><author>A_long_way_to_go</author><pubDate>Fri, 25 Apr 2025 11:22:18 +0800</pubDate><description><![CDATA[输入: s = "cbaebabacd", p = "abc" 输出: [0,6] 解释: 起始索引等于 0 的子串是 "cba", 它是 "abc" 的异位词。起始索引等于 6 的子串是 "bac", 它是 "abc" 的异位词。给定两个字符串 s 和 p，找到 s 中所有 p 的 异位词 的子串，返回这些子串的起始索引。不考虑答案输出的顺序。解法一：暴力统计，每次取出s的p.length()个字符从头到位遍历，然后进行排序，观察是否和p排序后一样。438. 找到字符串中所有字母异位词。]]></description><category></category></item><item><title><![CDATA[力扣-hot100(滑动窗口最大值)]]></title><link>https://blog.youkuaiyun.com/A_long_way_to_go/article/details/147503563</link><guid>https://blog.youkuaiyun.com/A_long_way_to_go/article/details/147503563</guid><author>A_long_way_to_go</author><pubDate>Fri, 25 Apr 2025 11:19:51 +0800</pubDate><description><![CDATA[里面的数据如：13、11、9、5、1、0。// 公司还有员工的情况下，发现了一个新加入的员工，他不仅年轻(靠后)，能力还更强(数更大), 那就从kpi低的老员工开始优化。// 如果员工的数量已经可以评出优秀员工了，就选出第一名(其实就是第 i == k - 1 后开始的, 因为i的下标从0开始)输入：nums = [1,3,-1,-3,5,3,6,7], k = 3 输出：[3,3,5,5,6,7] 解释： 滑动窗口的位置 最大值。// 观察了新员工的简历，先把能力比新员工低的老员工优化了(也就是后面的)]]></description><category></category></item><item><title><![CDATA[力扣-hot100（无重复字符的最长子串）]]></title><link>https://blog.youkuaiyun.com/A_long_way_to_go/article/details/147354873</link><guid>https://blog.youkuaiyun.com/A_long_way_to_go/article/details/147354873</guid><author>A_long_way_to_go</author><pubDate>Sat, 19 Apr 2025 19:53:54 +0800</pubDate><description><![CDATA[维护一个队列，每次往队列中加入元素，就去看看队列中是否有一个相同的元素已经在里面了，如果有，就把元素从前往后进行结算，再将该元素加入队列中，以此类推，得到最长子串.解法二: 用Set来维护这些元素(set.contains(c)的时间复杂度为O(1))，那怎么保留队列的性质呢?我们只需要在加入元素的时候一直加加加，加到厌倦(出现了重复元素)，然后移除的时候只需要移除掉那个重复元素就行。// 除了第一次加入元素外，其它都是上一轮加到重复了才会停止，所以将上一个字符移除。// 判断队列中是否存在这么一个元素。]]></description><category></category></item><item><title><![CDATA[力扣-hot100（接雨水-双指针）]]></title><link>https://blog.youkuaiyun.com/A_long_way_to_go/article/details/147347980</link><guid>https://blog.youkuaiyun.com/A_long_way_to_go/article/details/147347980</guid><author>A_long_way_to_go</author><pubDate>Sat, 19 Apr 2025 11:21:55 +0800</pubDate><description><![CDATA[思路：双指针分别指向两侧，不断向中间靠近，如果靠近的过程中右边最长的柱子长度 大于 左边最长的柱子长度，短板效应，那么就可以计算左边当前的空穴可以装多少水了【是由左边最长的柱子和左边当前柱子的长度差决定的(leftMax - height[left])】输入：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 个单位的雨水（蓝色部分表示雨水）。]]></description><category></category></item><item><title><![CDATA[力扣-hot100(三数之和-双指针)]]></title><link>https://blog.youkuaiyun.com/A_long_way_to_go/article/details/147276235</link><guid>https://blog.youkuaiyun.com/A_long_way_to_go/article/details/147276235</guid><author>A_long_way_to_go</author><pubDate>Wed, 16 Apr 2025 14:27:29 +0800</pubDate><description><![CDATA[/ 去重：只对能组成三元组的去重, 这里不能出现重复的三元组，如果类似于nums[l] 和nums[l + 1] 是相同的话，那就是确定了两个数(nums[i] 和 nums[l]都确定了)，第三数也会被随之确定下来。不同的三元组是 [-1,0,1] 和 [-1,-1,2]。输入：nums = [-1,0,1,2,-1,-4]输出：[[-1,-1,2],[-1,0,1]]注意，输出的顺序和三元组的顺序并不重要。输入：nums = [0,1,1]输入：nums = [0,0,0]输出：[[0,0,0]]]]></description><category></category></item><item><title><![CDATA[力扣-hot100（盛最多水的容器-双指针）]]></title><link>https://blog.youkuaiyun.com/A_long_way_to_go/article/details/147275496</link><guid>https://blog.youkuaiyun.com/A_long_way_to_go/article/details/147275496</guid><author>A_long_way_to_go</author><pubDate>Wed, 16 Apr 2025 13:56:25 +0800</pubDate><description><![CDATA[补充： 这样做会不会漏掉，这里漏掉的情况只可能有一种，就是当两个高相等时，移动了随机一根，但是要明确的是高的长度是由最短的那根确定下来的，即便你后面有很长的，也会被这两根相同的限制，所以不论移动哪根都是一样的。解释：图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。容器的长是由两直线(宽)的距离决定的，容器的高是两直线中最短的那根确定的。实事上并不是每条边(高)都是有价值的，宽的价值是很好确定的，最两侧的边，为宽的最大权重。// 容器的长是由两直线的距离决定的，容器的高是两直线中最短的那根。]]></description><category></category></item><item><title><![CDATA[力扣-hot100（移动零-双指针）]]></title><link>https://blog.youkuaiyun.com/A_long_way_to_go/article/details/147275072</link><guid>https://blog.youkuaiyun.com/A_long_way_to_go/article/details/147275072</guid><author>A_long_way_to_go</author><pubDate>Wed, 16 Apr 2025 13:39:00 +0800</pubDate><description><![CDATA[/right不断往后扩展找到不为0的数与前面的数交换，与哪个位置的数交换呢？，上述代码是找到不为0的数往前移动，然后在最后补零。依据题目可以看到是要把某个固定的元素给往后移动，既然如此，我们就可以把那个固定的元素保存下来，再把其它元素往前移动，然后最后的n个固定元素可以直接补齐。// right为快指针，目的是找到不为0的数，将其往左移动，left负责记录下不为0的数的个数。移动到数组的末尾，同时保持非零元素的相对顺序。输入: nums = [0,1,0,3,12]输出: [1,3,12,0,0]]]></description><category></category></item><item><title><![CDATA[力扣-hot100（最长连续序列 - Hash）]]></title><link>https://blog.youkuaiyun.com/A_long_way_to_go/article/details/147252227</link><guid>https://blog.youkuaiyun.com/A_long_way_to_go/article/details/147252227</guid><author>A_long_way_to_go</author><pubDate>Tue, 15 Apr 2025 16:04:02 +0800</pubDate><description><![CDATA[那么我可以将数组中的分为 n 个组，毕竟组是相对有序的，比直接在乱七八糟的原数组里直接做要来的方便。一旦断了，那断的那个数你就自己做队长去招募你的队员吧。我们只需要从队长开始不断的报数就可以统计该组的元素数量，然后求每个组的max就行了。第一想法，先预处理一波，可以创建一个数组把存在的数都标记一遍，如：nums = [100,4,200]，标记：number[100] = 1, number[4] = 1, number[200] = 1;，找出数字连续的最长序列（不要求序列元素在原数组中连续）的长度。]]></description><category></category></item><item><title><![CDATA[力扣 - Hot100 (字母异位词分组 - Hash)]]></title><link>https://blog.youkuaiyun.com/A_long_way_to_go/article/details/147232931</link><guid>https://blog.youkuaiyun.com/A_long_way_to_go/article/details/147232931</guid><author>A_long_way_to_go</author><pubDate>Mon, 14 Apr 2025 21:09:03 +0800</pubDate><description><![CDATA[题目要求按异位词来分组，也就是只要组成单词的字母完全相同，就可以被称为一个组，他们就应该有同样的唯一性标识可以进入同一个组，也就是要有同样的key。而题目中的成员是String类型，这就很容易了，让每个String排个序，同一组的异位词不就可以等到同样的结果吗。有没有这样一种数据结构可以维护n个不同的组，并且能检测每个想加入的成员的唯一性标识来决定给你分配到哪个组 (不然每个元素都可以加入任意组那我分组的意义在哪?// 加入失败，您加入的组不存在。// 维护n个组，每个组互为字母异位词。]]></description><category></category></item><item><title><![CDATA[苍穹外卖day04]]></title><link>https://blog.youkuaiyun.com/A_long_way_to_go/article/details/147232097</link><guid>https://blog.youkuaiyun.com/A_long_way_to_go/article/details/147232097</guid><author>A_long_way_to_go</author><pubDate>Mon, 14 Apr 2025 20:24:17 +0800</pubDate><description><![CDATA[webSocketServer.sendToAllClient("这是来自服务端的消息：" + DateTimeFormatter.ofPattern("HH:mm:ss").format(LocalDateTime.now()));System.out.println("收到来自客户端：" + sid + "的信息:" + message);System.out.println("客户端：" + sid + "建立连接");System.out.println("连接断开:" + sid);]]></description><category></category></item></channel></rss>