<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Teacher_HENG]]></title><description><![CDATA[操千曲而后晓声，观千剑而后识器]]></description><link>https://blog.youkuaiyun.com/u010189239</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; u010189239]]></copyright><item><title><![CDATA[【图解数据结构与算法+LeetCode分类讲解】新课录制中......]]></title><link>https://blog.youkuaiyun.com/u010189239/article/details/129114480</link><guid>https://blog.youkuaiyun.com/u010189239/article/details/129114480</guid><author>u010189239</author><pubDate>Sun, 19 Feb 2023 20:42:26 +0800</pubDate><description><![CDATA[数据结构+算法+LeetCode分类讲解！]]></description><category></category></item><item><title><![CDATA[【图解数据结构与算法】视频教程正式上线B站，持续更新中......]]></title><link>https://blog.youkuaiyun.com/u010189239/article/details/106164334</link><guid>https://blog.youkuaiyun.com/u010189239/article/details/106164334</guid><author>u010189239</author><pubDate>Sat, 16 May 2020 20:08:59 +0800</pubDate><description><![CDATA[本主【图解数据结构与算法（Java语言描述）】

B站传送门 https://www.bilibili.com/video/BV1ea4y1e7v7/


]]></description><category></category></item><item><title><![CDATA[IT学生学习指南]]></title><link>https://blog.youkuaiyun.com/u010189239/article/details/104833550</link><guid>https://blog.youkuaiyun.com/u010189239/article/details/104833550</guid><author>u010189239</author><pubDate>Tue, 31 Mar 2020 16:19:09 +0800</pubDate><description><![CDATA[本文主要为了计算机相关专业的学生而写。内容是从本博主的工作经验和教学经验当中总结出来的一些干货，涵盖了从大一到大四期间学生所遇到的常见问题，包括如何找到满意的工作、如何选择适合自己的工作岗位、如何制定自己的学习计划、如何分辨自身适合考研还是就业、女生的IT之路怎么走、如何锻炼自己的技术等等大学生最关心的问题。如果大家觉得文本值得一看，那就请推荐给身边那些还在迷茫中的孩子们吧！]]></description><category></category></item><item><title><![CDATA[Java学习书籍推荐]]></title><link>https://blog.youkuaiyun.com/u010189239/article/details/105114058</link><guid>https://blog.youkuaiyun.com/u010189239/article/details/105114058</guid><author>u010189239</author><pubDate>Thu, 26 Mar 2020 11:28:15 +0800</pubDate><description><![CDATA[小白级别

《计算机是怎么跑起来的》



链接：https://pan.baidu.com/s/1HaR8W5yhc6bRoEPa_f4P5A
提取码：b0ec

《程序是怎么跑起来的》



链接：https://pan.baidu.com/s/1E-AFJSBAF3c_kqA1vQoeqw
提取码：f99e
复制这段内容后打开百度网盘手机App，操作更方便哦

入门级别

《Java语言程序...]]></description><category></category></item><item><title><![CDATA[【栈与队列】232. 用栈实现队列]]></title><link>https://blog.youkuaiyun.com/u010189239/article/details/104812712</link><guid>https://blog.youkuaiyun.com/u010189239/article/details/104812712</guid><author>u010189239</author><pubDate>Thu, 12 Mar 2020 10:32:18 +0800</pubDate><description><![CDATA[原题链接：https://leetcode-cn.com/problems/implement-queue-using-stacks/



分析和 225. 用队列实现栈 一样，只不过交换一下思考的角度而已

同样我们需要两个栈来实现队列

入队操作：此处一律默认将元素入栈到stackA中



出队操作：无非获取stackA的栈底元素1，则将所有元素从stackA出栈再入栈stackB，sta...]]></description><category></category></item><item><title><![CDATA[【栈与队列】225. 用队列实现栈]]></title><link>https://blog.youkuaiyun.com/u010189239/article/details/104811544</link><guid>https://blog.youkuaiyun.com/u010189239/article/details/104811544</guid><author>u010189239</author><pubDate>Thu, 12 Mar 2020 09:59:09 +0800</pubDate><description><![CDATA[原题链接：https://leetcode-cn.com/problems/implement-stack-using-queues/



队列是先进先出，栈是先进后出

但是两者共同点是，无论入队操作还是入栈操作，都是将元素进行尾插法进入的

无非出队操作的是第一个元素，出栈操作的是最后一个元素

栈的出栈操作无非就是获取队列的队尾元素

如果使用队列实现出栈操作，只能先将队尾元素之前的元素移...]]></description><category></category></item><item><title><![CDATA[【数组相关】766. 托普利茨矩阵]]></title><link>https://blog.youkuaiyun.com/u010189239/article/details/104790385</link><guid>https://blog.youkuaiyun.com/u010189239/article/details/104790385</guid><author>u010189239</author><pubDate>Wed, 11 Mar 2020 10:16:20 +0800</pubDate><description><![CDATA[原题链接：https://leetcode-cn.com/problems/toeplitz-matrix/



主要找到每个从左上到右下的开头即可，所以大致可以将矩阵分为两个部分



绿色区域我们设定开头从第1行找；黄色区域我们设定开头从第1列找（抛去第1行第1列）



如上图所示，先找到绿色区域的开头，然后在从每一个开头开始向右下连续相等判断；再找到黄色区域的头，然后在从每一个开头开始向...]]></description><category></category></item><item><title><![CDATA[【数组相关】35. 搜索插入位置]]></title><link>https://blog.youkuaiyun.com/u010189239/article/details/104790243</link><guid>https://blog.youkuaiyun.com/u010189239/article/details/104790243</guid><author>u010189239</author><pubDate>Wed, 11 Mar 2020 09:57:24 +0800</pubDate><description><![CDATA[原题链接：https://leetcode-cn.com/problems/search-insert-position/



典型的二分查找算法，不太懂的自行百度吧


class Solution {
    public int searchInsert(int[] nums, int target) {
        if(nums==null||nums.length==0){
  ...]]></description><category></category></item><item><title><![CDATA[【数组相关】724. 寻找数组的中心索引]]></title><link>https://blog.youkuaiyun.com/u010189239/article/details/104789842</link><guid>https://blog.youkuaiyun.com/u010189239/article/details/104789842</guid><author>u010189239</author><pubDate>Wed, 11 Mar 2020 09:52:44 +0800</pubDate><description><![CDATA[原题链接：https://leetcode-cn.com/problems/find-pivot-index/



从左到右一个个找吧，只不过并不需要每次寻找一个中心索引，都要计算左边和右边的和

我们可以先将数组的总和 sum 求出来，如示例1所示，总和 sum=28

接着来看



当中心索引 i=0 时 左边的和 leftSum=0 右边的和 rightSum=sum-leftSum-n...]]></description><category></category></item><item><title><![CDATA[【数组相关】674. 最长连续递增序列]]></title><link>https://blog.youkuaiyun.com/u010189239/article/details/104789457</link><guid>https://blog.youkuaiyun.com/u010189239/article/details/104789457</guid><author>u010189239</author><pubDate>Wed, 11 Mar 2020 09:34:32 +0800</pubDate><description><![CDATA[原题链接：https://leetcode-cn.com/problems/longest-continuous-increasing-subsequence/



同样还是双指针的应用，思路和 【209. 长度最小的子数组】很像

设置maxCount为最大的连续长度maxCount=1（一个数字也算连续）

设置count为当前的连续长度，如果count&gt;maxCount 则更新max...]]></description><category></category></item><item><title><![CDATA[【数组相关】209. 长度最小的子数组]]></title><link>https://blog.youkuaiyun.com/u010189239/article/details/104670962</link><guid>https://blog.youkuaiyun.com/u010189239/article/details/104670962</guid><author>u010189239</author><pubDate>Wed, 11 Mar 2020 09:07:02 +0800</pubDate><description><![CDATA[原题链接：https://leetcode-cn.com/problems/minimum-size-subarray-sum/



双指针滑窗技巧的典型应用

设定一个长度len=0，用来统计最短的数组长度；设定一个sum=0，用来计算和；s=7；

然后从第1个元素开始，来吧



此时sum=sum+nums[0]=2，不满足&gt;=s，则接着往后加



此时sum






...]]></description><category></category></item><item><title><![CDATA[【数组相关】80. 删除排序数组中的重复项 II]]></title><link>https://blog.youkuaiyun.com/u010189239/article/details/104670875</link><guid>https://blog.youkuaiyun.com/u010189239/article/details/104670875</guid><author>u010189239</author><pubDate>Thu, 05 Mar 2020 11:20:40 +0800</pubDate><description><![CDATA[原题链接：https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array-ii/



该题思路借鉴【283. 移动零】


class Solution {
    public int removeDuplicates(int[] nums) {
        int i = 0;
        for (int n...]]></description><category></category></item><item><title><![CDATA[【数组相关】66. 加一]]></title><link>https://blog.youkuaiyun.com/u010189239/article/details/104670261</link><guid>https://blog.youkuaiyun.com/u010189239/article/details/104670261</guid><author>u010189239</author><pubDate>Thu, 05 Mar 2020 11:09:05 +0800</pubDate><description><![CDATA[原题链接：https://leetcode-cn.com/problems/plus-one/



不建议将数组中的数字拼接成整数计算，这样的话会导致整形溢出。

在操作的时候，注意一下进位的问题

例如[1,2,9]+1=[1,3,0]
	例如[1,9,9]+1=[2,0,0]
	特殊的[9,9,9]+1=[1,0,0,0]
也就是说如果数组中全是9，则计算出来的数组长度比原先多1，且第一个元...]]></description><category></category></item><item><title><![CDATA[【数组相关】240. 搜索二维矩阵 II]]></title><link>https://blog.youkuaiyun.com/u010189239/article/details/104669364</link><guid>https://blog.youkuaiyun.com/u010189239/article/details/104669364</guid><author>u010189239</author><pubDate>Thu, 05 Mar 2020 10:40:14 +0800</pubDate><description><![CDATA[原题链接：https://leetcode-cn.com/problems/search-a-2d-matrix-ii/



不利用特性的话，遍历二维数组查找，时间复杂度为O(m*n)；

利用特性1，每行都进行一次折半查找，那么我们的时间复杂度为O(m*logn)；

那如果加上特性2呢？问题是如何利用特性2。

matrix[0][0]也就是1，右边比它大，下边比它也大；
	matrix[0...]]></description><category></category></item><item><title><![CDATA[【数组相关】88. 合并两个有序数组]]></title><link>https://blog.youkuaiyun.com/u010189239/article/details/104668425</link><guid>https://blog.youkuaiyun.com/u010189239/article/details/104668425</guid><author>u010189239</author><pubDate>Thu, 05 Mar 2020 10:18:53 +0800</pubDate><description><![CDATA[原题链接：https://leetcode-cn.com/problems/merge-sorted-array/



该题的核心问题是，到底是从左到右遍历操作数据，还是从右到左遍历。

不妨先设定一个规则，如果nums2中的某个元素大于等于nums1中的某个元素，则移动nums2中的该元素；否则移动nums1中的元素。

按照从左到右遍历来说，问题就在于，nums2[0]也就是2，nums1[...]]></description><category></category></item><item><title><![CDATA[【数组相关】1013. 将数组分成和相等的三个部分]]></title><link>https://blog.youkuaiyun.com/u010189239/article/details/104419165</link><guid>https://blog.youkuaiyun.com/u010189239/article/details/104419165</guid><author>u010189239</author><pubDate>Thu, 20 Feb 2020 22:15:13 +0800</pubDate><description><![CDATA[原题链接：https://leetcode-cn.com/problems/partition-array-into-three-parts-with-equal-sum/



反证法，就假设当前数组可以被分为3部分，所以先计算总和 sum ，在计算每个部分的值 key=sum/3

然后数组从左到右遍历，每遍历一个元素，则让key减去它，直到key减为0，计数出现一组 group=1，key再...]]></description><category></category></item><item><title><![CDATA[【数组相关】485. 最大连续1的个数]]></title><link>https://blog.youkuaiyun.com/u010189239/article/details/104418638</link><guid>https://blog.youkuaiyun.com/u010189239/article/details/104418638</guid><author>u010189239</author><pubDate>Thu, 20 Feb 2020 21:57:07 +0800</pubDate><description><![CDATA[原题链接：https://leetcode-cn.com/problems/max-consecutive-ones/



借助选择排序的思想，当前和之后的元素进行比较，如果连续是1就累加，最终得到最大的累加即结果

动画如下:




class Solution {
    public int findMaxConsecutiveOnes(int[] nums) {
        if ...]]></description><category></category></item><item><title><![CDATA[【数组相关】26. 删除排序数组中的重复项]]></title><link>https://blog.youkuaiyun.com/u010189239/article/details/104403679</link><guid>https://blog.youkuaiyun.com/u010189239/article/details/104403679</guid><author>u010189239</author><pubDate>Thu, 20 Feb 2020 01:16:41 +0800</pubDate><description><![CDATA[原题链接：https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/



此题思路借鉴【283. 移动零】


class Solution {
    public int removeDuplicates(int[] nums) {
        int n = 0;
        for(int i = 1...]]></description><category></category></item><item><title><![CDATA[【数组相关】27. 移除元素]]></title><link>https://blog.youkuaiyun.com/u010189239/article/details/104403665</link><guid>https://blog.youkuaiyun.com/u010189239/article/details/104403665</guid><author>u010189239</author><pubDate>Thu, 20 Feb 2020 01:12:25 +0800</pubDate><description><![CDATA[原题链接：https://leetcode-cn.com/problems/remove-element/



该题思路借鉴【283. 移动零】，将283移动的0元素当成这里的指定元素 val 即可，哈哈，直接上代码了


class Solution {
    public int removeElement(int[] nums, int val) {
        if (nums =...]]></description><category></category></item><item><title><![CDATA[【数组相关】283. 移动零]]></title><link>https://blog.youkuaiyun.com/u010189239/article/details/104403549</link><guid>https://blog.youkuaiyun.com/u010189239/article/details/104403549</guid><author>u010189239</author><pubDate>Thu, 20 Feb 2020 01:04:10 +0800</pubDate><description><![CDATA[原题链接：https://leetcode-cn.com/problems/move-zeroes/



关键信息：

将0移动到数组后方
	保证非零元素相对位置
	必须原地修改
解法类似于选择排序，从第1个0元素开始，向后找直到第1个非0元素，交换两者位置之后，接着移动到第2个0元素继续向后找非0元素两者交换，依次类推，直到所有数据找完为止。

但是如果按照上述步骤套用选择排序的代码去做的话，...]]></description><category></category></item></channel></rss>