<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[娄零的博客]]></title><description><![CDATA[希望 编程 能带给你意想不到的快乐~]]></description><link>https://blog.youkuaiyun.com/ls158390</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ls158390]]></copyright><item><title><![CDATA[科大讯飞笔试编程第二题（处理Scanner不能先输入数字再输入字符串问题）]]></title><link>https://blog.youkuaiyun.com/ls158390/article/details/132513463</link><guid>https://blog.youkuaiyun.com/ls158390/article/details/132513463</guid><author>ls158390</author><pubDate>Sat, 26 Aug 2023 17:00:47 +0800</pubDate><description><![CDATA[标记读取方法 nextInt() 读取数字，然后在分隔符处停止，这里的分隔符是行分隔符(回车键)，nextLine() 会在读取行分隔符之后结束，然后返回行分隔符之前的字符串，因为行分隔符之前没有字符，所以line是空的。：因为我们前面读取的是一个数字，我们可以先用字符串读取这个数字，在用字符串读取我们所要读取的字符，然后再把第一个读取的字符串转换为数字就可以实现这个功能了。在使用scanner的时候如果先读取一个数字，在读取一行带有空格的字符串，势必会出错或者字符串读不到。]]></description><category></category></item><item><title><![CDATA[腾讯音乐第三道编程题]]></title><link>https://blog.youkuaiyun.com/ls158390/article/details/130175612</link><guid>https://blog.youkuaiyun.com/ls158390/article/details/130175612</guid><author>ls158390</author><pubDate>Sat, 15 Apr 2023 21:29:53 +0800</pubDate><description><![CDATA[题目描述：给一个数字n，构成n*(n+1)/2大小的数组，包含1个1，2个2，n个n，最后输出的数组相邻的两个数字不相同，输出的数组可能不唯一。：我们其实可以发现，输出的数组中最大值n和次大值n-1是交叉存放的，然后再依次取剩下的最大值和次大值（sortt函数实现的功能)。输出：[4,3,4,3,4,3,4,2,1,2]2023.4.13号的第三道编程笔试题。]]></description><category></category></item><item><title><![CDATA[刷题30-对称的二叉树]]></title><link>https://blog.youkuaiyun.com/ls158390/article/details/129898232</link><guid>https://blog.youkuaiyun.com/ls158390/article/details/129898232</guid><author>ls158390</author><pubDate>Sat, 01 Apr 2023 16:02:57 +0800</pubDate><description><![CDATA[思路：通过找规律可以发现，当n=0，输出为1；n=4，输出为5，类似于。要想两棵树镜像，那么一棵树左边的左边要和二棵树右边的右边镜像，一棵树左边的右边要和二棵树右边的左边镜像。调用递归函数，我们想知道它的左右孩子是否镜像，传入的值是root的左孩子和右孩子。左节点为空的时候右节点不为空，或反之 -> 长得不一样-> false。只有左左和右右镜像且左右和右左镜像的时候，我们才能说这两棵树是镜像的。左节点和右节点都为空 -> 倒底了都长得一样 ->true。输出：是：true，不是：false。]]></description><category></category></item><item><title><![CDATA[队列的基本知识]]></title><link>https://blog.youkuaiyun.com/ls158390/article/details/129332141</link><guid>https://blog.youkuaiyun.com/ls158390/article/details/129332141</guid><author>ls158390</author><pubDate>Mon, 20 Mar 2023 10:41:17 +0800</pubDate><description><![CDATA[一棵深度为k有n个节点的二叉树，对树中的节点按从上至下、从左至右的顺序进行编号，如果编号为i(1]]></description><category></category></item><item><title><![CDATA[刷题29-最小时间差]]></title><link>https://blog.youkuaiyun.com/ls158390/article/details/129248638</link><guid>https://blog.youkuaiyun.com/ls158390/article/details/129248638</guid><author>ls158390</author><pubDate>Wed, 01 Mar 2023 19:43:06 +0800</pubDate><description><![CDATA[还要注意00：00指的是前一天的，还是后一天的，所以要再添加一个24*60的元素。Collections.sort排序适合对list集合排序。timePoints列表中不能超过24。解题思路：后缀表达式–操作符在操作数的后面。解题思路：一天有24个小时，也就是有24。]]></description><category></category></item><item><title><![CDATA[刷题28-有效的变位词]]></title><link>https://blog.youkuaiyun.com/ls158390/article/details/129220711</link><guid>https://blog.youkuaiyun.com/ls158390/article/details/129220711</guid><author>ls158390</author><pubDate>Sun, 26 Feb 2023 10:08:57 +0800</pubDate><description><![CDATA[需要注意的特殊情况1.只有一个单词肯定符合要求2.当两个字母前半部分完全一样时，短的单词在前面，比如app在前，apple在后。解题思路：判定一组单词是否也按照给定的字母表的顺序排列，只需要比较两个单词中第一个不相同的字母顺序。首先要将字母表映射到一维整形数组中，越靠前的字母数组取值越小。把字符串中的字符映射成整型数组，统计每个字符出现的次数。，当两个字符串完全相等或者长度不等时，就不是变位词。ArrayList为基于数组的大小可变。解题思路：注意返回类型为。，可以理解为列表中套列表。]]></description><category></category></item><item><title><![CDATA[刷题27-最少最近使用缓存]]></title><link>https://blog.youkuaiyun.com/ls158390/article/details/129176113</link><guid>https://blog.youkuaiyun.com/ls158390/article/details/129176113</guid><author>ls158390</author><pubDate>Sat, 25 Feb 2023 16:32:47 +0800</pubDate><description><![CDATA[解题思路：经过分析可知，需要设计一个哈希表和一个双向链表，位于链表的第一个元素是最少使用访问的。]]></description><category></category></item><item><title><![CDATA[哈希表的介绍]]></title><link>https://blog.youkuaiyun.com/ls158390/article/details/129131499</link><guid>https://blog.youkuaiyun.com/ls158390/article/details/129131499</guid><author>ls158390</author><pubDate>Mon, 20 Feb 2023 21:12:46 +0800</pubDate><description><![CDATA[在哈希表中插入、删除或查找一个元素都只需要O(1)的时间，因此经常被用来优化时间效率。在Java中，哈希表有两个对应的类型，即HashSet和HashMap。]]></description><category></category></item><item><title><![CDATA[刷题26-排序的循环链表]]></title><link>https://blog.youkuaiyun.com/ls158390/article/details/129113296</link><guid>https://blog.youkuaiyun.com/ls158390/article/details/129113296</guid><author>ls158390</author><pubDate>Sun, 19 Feb 2023 19:03:10 +0800</pubDate><description><![CDATA[先判断节点是否为空，空的话就将插入新值的节点。非空的话，首先找到值最小的节点realNode，其次寻找插入位置，最后连接节点。解题思路：首先注意是。]]></description><category></category></item><item><title><![CDATA[刷题26-回文链表]]></title><link>https://blog.youkuaiyun.com/ls158390/article/details/129068516</link><guid>https://blog.youkuaiyun.com/ls158390/article/details/129068516</guid><author>ls158390</author><pubDate>Fri, 17 Feb 2023 10:39:06 +0800</pubDate><description><![CDATA[解题思路：双端队列还是挺好用，注意链表的节点数是奇数还是偶数。奇数的话中间的节点就不用比较了，其他的节点首尾各出来一个进行比较。解题思路：需要利用递归算法展平每个子链表，然后将子链表插在node和next节点之间。]]></description><category></category></item><item><title><![CDATA[刷题25-重排链表]]></title><link>https://blog.youkuaiyun.com/ls158390/article/details/129050198</link><guid>https://blog.youkuaiyun.com/ls158390/article/details/129050198</guid><author>ls158390</author><pubDate>Thu, 16 Feb 2023 10:19:22 +0800</pubDate><description><![CDATA[deque做队列使用时，继承了Queue的接口，所以插入元素操作可以使用Queue的用法offer()或者相当于deque的从队尾插入元素offerLast()解题思路：通过观察链表可以发现，把链表一分为二，后半段链表反转，然后两个链表穿插连接，当链表的节点总数是奇数时，要保证链表的前半段比后半段多一个节点。关于把链表一分为二，可以采用定义快慢指针的做法，快指针每次走两步，慢指针每次走一步，当快指针走到末尾时，满指针也走到了中间节点。Deque实现了双向队列，队列，和栈的功能。1.Deque的介绍。]]></description><category></category></item><item><title><![CDATA[刷题23-链表中的两数相加]]></title><link>https://blog.youkuaiyun.com/ls158390/article/details/128997899</link><guid>https://blog.youkuaiyun.com/ls158390/article/details/128997899</guid><author>ls158390</author><pubDate>Sun, 12 Feb 2023 18:31:50 +0800</pubDate><description><![CDATA[利用栈“后进先出”的特点，后面的数先相加，进位由r保存，也解决了两个链表长度不一致的问题，没有的元素设为0。解题思路：利用两个栈+一个链表。]]></description><category></category></item><item><title><![CDATA[刷题22-反转链表]]></title><link>https://blog.youkuaiyun.com/ls158390/article/details/128595265</link><guid>https://blog.youkuaiyun.com/ls158390/article/details/128595265</guid><author>ls158390</author><pubDate>Sat, 07 Jan 2023 21:08:09 +0800</pubDate><description><![CDATA[解题思路：第一种递归思想，有递也有归，递的过程就是head指针一直走到尾，归的过程就是后一个节点连在前一个节点的过程。解题思路：第二种，用迭代的思想，有三个指针分别记录当前节点，当前节点的前一个结点，以及后一个节点。ps:今天又是懒懒散散的一天，再过两天！]]></description><category></category></item><item><title><![CDATA[刷题21-两个链表的第一个重合节点]]></title><link>https://blog.youkuaiyun.com/ls158390/article/details/128583187</link><guid>https://blog.youkuaiyun.com/ls158390/article/details/128583187</guid><author>ls158390</author><pubDate>Sat, 07 Jan 2023 19:46:13 +0800</pubDate><description><![CDATA[解题思路：受22题启发，建立一个set集合，先遍历A链表，把节点值及关系存进去，再遍历B链表，如果有相同的节点则返回，否则无。]]></description><category></category></item><item><title><![CDATA[刷题20-链表中环的入口节点]]></title><link>https://blog.youkuaiyun.com/ls158390/article/details/128570243</link><guid>https://blog.youkuaiyun.com/ls158390/article/details/128570243</guid><author>ls158390</author><pubDate>Thu, 05 Jan 2023 21:10:41 +0800</pubDate><description><![CDATA[设置两个快慢指针，一个一次走一步，一个一次走两步，如果链表中不包括环，走的快的指针直至到达链表的尾节点都不会和走的慢的相遇（判断条件fast.next!=null，当下一个节点为空时，说明没有环，直接退出循环）。如果包含环，走的快的指针在环里绕了一圈后会追上慢的指针，此时让快的指针回到头节点处，快慢指针继续一步一步走，等到再次相遇时，就是在入口节点处。还有一个思路，利用set集合，当集合中重复某个节点时就说明有环，它就是入环节点。]]></description><category></category></item><item><title><![CDATA[刷题19-删除链表的倒数第n个节点]]></title><link>https://blog.youkuaiyun.com/ls158390/article/details/128554376</link><guid>https://blog.youkuaiyun.com/ls158390/article/details/128554376</guid><author>ls158390</author><pubDate>Wed, 04 Jan 2023 21:20:02 +0800</pubDate><description><![CDATA[解题思路：第一种：建立头节点，不用判断删除头节点为空的情况，设置两个指针front和back，开始都指向头节点，开始指针front先走n步，接着front指针一直走到尾，back指针开始走，当frnot指针到尾时，back指针恰好走到倒数第n+1个节点。如果是ListNode front=head，则开始指向1这个节点。具体演示如下，删除倒数第2个节点。]]></description><category></category></item><item><title><![CDATA[链表的基本知识]]></title><link>https://blog.youkuaiyun.com/ls158390/article/details/128520031</link><guid>https://blog.youkuaiyun.com/ls158390/article/details/128520031</guid><author>ls158390</author><pubDate>Mon, 02 Jan 2023 13:41:15 +0800</pubDate><description><![CDATA[另外一种方法，可以首先创建一个哨兵节点，并把该节点当作链表的头节点，然后把原始的链表添加在哨兵节点的后面。在链表的尾部添加一个节点，由于通常只有一个指向单向链表头节点的指针，因此需要遍历链表中的节点直至到达链表的尾部，然后在尾部添加一个节点。找到删除节点的前一个节点，然后把该节点的next指针指向它下一个节点的下一个节点。当输入的链表节点为null时，输入的链表为空。此时，新添加的节点成为链表中的唯一节点，也就是链表的头节点。哨兵节点通常位于链表的头部，它的值无任何意义。在一个有哨兵节点的链表中，]]></description><category></category></item><item><title><![CDATA[刷题18-最多删除一个字符得到回文]]></title><link>https://blog.youkuaiyun.com/ls158390/article/details/128515620</link><guid>https://blog.youkuaiyun.com/ls158390/article/details/128515620</guid><author>ls158390</author><pubDate>Sun, 01 Jan 2023 20:46:00 +0800</pubDate><description><![CDATA[解题思路：终于自己独立做出来啦，写两个函数，一个是判断是否为回文数的函数judge()，另外一个函数包括两个指针left和right，每次left指针移动一位，right指针从left+1到s.length()-1区间内变化，然后调用判断函数，判断区间内子串情况，是的话+1。解题思路：参考了一下别人的解答，难点在于当遇到不同字符时，应该删除哪个，应该两种情况都考虑一下，可以再写一个函数，专门判断删除后的后续字符回文情况。]]></description><category></category></item><item><title><![CDATA[刷题17-有效的回文]]></title><link>https://blog.youkuaiyun.com/ls158390/article/details/128500571</link><guid>https://blog.youkuaiyun.com/ls158390/article/details/128500571</guid><author>ls158390</author><pubDate>Fri, 30 Dec 2022 20:57:49 +0800</pubDate><description><![CDATA[解题思路：想的比较简单，首先就是把字符串转为小写的，用toLowerCase()函数，然后定义一个字符数组，只存储数字和字符，最后首尾比较字符是否相等。看解答还有char类型中还有isLetterorDigit()函数，判断是否是字符或者数字。]]></description><category></category></item><item><title><![CDATA[刷题16-包含所有字符的最短字符串]]></title><link>https://blog.youkuaiyun.com/ls158390/article/details/128492602</link><guid>https://blog.youkuaiyun.com/ls158390/article/details/128492602</guid><author>ls158390</author><pubDate>Fri, 30 Dec 2022 11:05:39 +0800</pubDate><description><![CDATA[当cnt2[n]>=cnt1[n]，也就是cnt2中 n 所代表的字符出现次数，比cnt1中 n 所代表的字符出现次数多或相等，也就是含有。解题思路：把字符串s和t抽象为两个整型数组，对于子串t，记录每个字母出现的次数，定义变量diff，初值为t字符串中不重样的字符个数。利用双指针找到以下标right结尾，且含有t所有字符的最小长度区间[left,right].定义两个数组 cnt1与cnt2，将字母转化成数字，并以此为下标，出现次数作为值存进数组中，]]></description><category></category></item></channel></rss>