<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[G1useppE的博客]]></title><description><![CDATA[博主非科班转码，博客主要是个人对一些前端技术的见解和一些算法题的js代码题解]]></description><link>https://blog.youkuaiyun.com/G1useppE</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; G1useppE]]></copyright><item><title><![CDATA[组合总和IV(js三种解法)]]></title><link>https://blog.youkuaiyun.com/G1useppE/article/details/125201515</link><guid>https://blog.youkuaiyun.com/G1useppE/article/details/125201515</guid><author>G1useppE</author><pubDate>Thu, 09 Jun 2022 14:10:35 +0800</pubDate><description><![CDATA[给你一个由 不同 整数组成的数组 nums ，和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。题目数据保证答案符合 32 位整数范围。示例 1：输入：nums = [1,2,3], target = 4
输出：7
解释：
所有可能的组合为：
(1, 1, 1, 1)
(1, 1, 2)
(1, 2, 1)
(1, 3)
(2, 1, 1)
(2, 2)
(3, 1)
请注意，顺序不同的序列被视作不同的组合。
示例 2：输入：nums = [9], tar]]></description><category></category></item><item><title><![CDATA[在排序数组中查找元素的第一个和最后一个位置]]></title><link>https://blog.youkuaiyun.com/G1useppE/article/details/125111004</link><guid>https://blog.youkuaiyun.com/G1useppE/article/details/125111004</guid><author>G1useppE</author><pubDate>Fri, 03 Jun 2022 11:15:48 +0800</pubDate><description><![CDATA[给定一个按照升序排列的整数数组 nums，和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target，返回 [-1, -1]。进阶：你可以设计并实现时间复杂度为 O(log n) 的算法解决此问题吗？示例 1：输入：nums = [5,7,7,8,8,10], target = 8
输出：[3,4]
示例 2：输入：nums = [5,7,7,8,8,10], target = 6
输出：[-1,-1]
示例 3：输入：nums = [], target =]]></description><category></category></item><item><title><![CDATA[下一个排列]]></title><link>https://blog.youkuaiyun.com/G1useppE/article/details/125106212</link><guid>https://blog.youkuaiyun.com/G1useppE/article/details/125106212</guid><author>G1useppE</author><pubDate>Thu, 02 Jun 2022 21:12:41 +0800</pubDate><description><![CDATA[整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。例如，arr = [1,2,3] ，以下这些都可以视作 arr 的排列：[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1] 。
整数数组的 下一个排列 是指其整数的下一个字典序更大的排列。更正式地，如果数组的所有排列根据其字典顺序从小到大排列在一个容器中，那么数组的 下一个排列 就是在这个有序容器中排在它后面的那个排列。如果不存在下一个更大的排列，那么这个数组必须重排为字典序最小的排列（即，其元素按升序排列）。例如，arr = [1,2]]></description><category></category></item><item><title><![CDATA[华为机考：二叉树的层序遍历]]></title><link>https://blog.youkuaiyun.com/G1useppE/article/details/125070336</link><guid>https://blog.youkuaiyun.com/G1useppE/article/details/125070336</guid><author>G1useppE</author><pubDate>Tue, 31 May 2022 17:57:59 +0800</pubDate><description><![CDATA[题目：

给定一棵二叉树的前序遍历和中序遍历，求其层序遍历的结果。

输入：
两个字符串，其长度n均小于等于26
第一行为前序遍历，第二行为中序遍历
二叉树中的结点名称以大写字母表示：A，B，C….最多26个结点

输出：
输入样例可能有多组，对于每组测试样例
输出一行，为后序遍历的字符串

样例输入：

FDXEAG
XDEFAG
...]]></description><category></category></item><item><title><![CDATA[整数对最小和]]></title><link>https://blog.youkuaiyun.com/G1useppE/article/details/125059679</link><guid>https://blog.youkuaiyun.com/G1useppE/article/details/125059679</guid><author>G1useppE</author><pubDate>Tue, 31 May 2022 10:21:41 +0800</pubDate><description><![CDATA[问题：

给定两个整数数组array1、array2，数组元素按升序排列。假设从array1、array2中分别取出一个元素可构成一对元素，现在需要取出k对元素，并对取出的所有元素求和，计算和的最小值。
注意：两对元素如果对应于array1、array2中两个下标均相同，则视为同一对元素。

输入描述
输入两行数组array1、array2，每行首个数字为数组大小size(0&lt;size&lt;=100)
0&lt;array1[i]&lt;=1000
0&lt;array2[i]&lt;=1000
接]]></description><category></category></item><item><title><![CDATA[字符串变换最小字符串]]></title><link>https://blog.youkuaiyun.com/G1useppE/article/details/125025845</link><guid>https://blog.youkuaiyun.com/G1useppE/article/details/125025845</guid><author>G1useppE</author><pubDate>Sun, 29 May 2022 00:47:44 +0800</pubDate><description><![CDATA[题目：

给定一个字符串s，最多只能进行一次变换，返回变换后能得到的最小字符串（按照字典序进行比较）。

变换规则：交换字符串中任意两个不同位置的字符。



解题思路：


1、对字符串按照字典序进行排序，找到字典序最小的字符串。

2、找到这个字符串中字典序最小的字符的位置。

3、找到字符串中第一个跟最小字符串不相同的字符的位置，然后跟第一个最小字符进行交换。

4、题目规定只能交换一次，交换后得到的就是最小字符串。


代码：


function changeString(str) {
    .]]></description><category></category></item><item><title><![CDATA[一种字符串压缩表示的解压]]></title><link>https://blog.youkuaiyun.com/G1useppE/article/details/125017208</link><guid>https://blog.youkuaiyun.com/G1useppE/article/details/125017208</guid><author>G1useppE</author><pubDate>Sat, 28 May 2022 21:14:02 +0800</pubDate><description><![CDATA[题目：

有一种简易压缩算法：针对全部由小写英文字母组成的字符串，将其中连续超过两个相同字母的部分压缩为连续个数加该字母，其他部分保持原样不变。例如：字符串“aaabbccccd”经过压缩成为字符串“3abb4cd”。 请您编写解压函数，根据输入的字符串，判断其是否为合法压缩过的字符串，若输入合法则输出解压缩后的字符串，否则输出字符串“!error”来报告错误。

解题思路：


利用正则表达式进行判断每个位置上的字符是字母还是数字，进而执行不同操作。

具体题解在下面代码的注释中。


代码：


fu.]]></description><category></category></item><item><title><![CDATA[非严格递增连续数字序列]]></title><link>https://blog.youkuaiyun.com/G1useppE/article/details/125013624</link><guid>https://blog.youkuaiyun.com/G1useppE/article/details/125013624</guid><author>G1useppE</author><pubDate>Sat, 28 May 2022 01:49:27 +0800</pubDate><description><![CDATA[题目：

输入一个字符串仅包含大小写字母和数字，求字符串中包含的最长的非严格递增连续数字序列的长度（比如12234属于非严格递增连续数字序列）。



解题思路：


1、创建一个dp数组，来保存每个位置上的非严格递增连续数字序列的长度，因为是非严格，因此相邻两个数可以相等。



2、初始化dp数组时应该将每个位置都填充上1，因为数字本身就可以作为一个长度为1的递增序列。



3、Math.max.apply()可以调用数字中的求最大值的方法，数组本身没有求最大值的方法，但通过apply调用，appl.]]></description><category></category></item><item><title><![CDATA[第K个排列]]></title><link>https://blog.youkuaiyun.com/G1useppE/article/details/125012501</link><guid>https://blog.youkuaiyun.com/G1useppE/article/details/125012501</guid><author>G1useppE</author><pubDate>Fri, 27 May 2022 23:15:16 +0800</pubDate><description><![CDATA[题目：

给定参数n，从1到n会有n个整数：1,2,3,…,n，这n个数字共有 n! 种排列。按大小顺序升序列出所有排列情况，并一一标记，当 n = 3 时, 所有排列如下：

"123"

"132"

"213"

"231"

"312"

"321"

给定 n 和 k，返回第 k 个排列。

解题思路：


这是一道全排列的变种问题，给定参数n表示1~n范围内的整数。求所有排列，再根据参数k得到所有排列中的第k个元素。



这里需要注意第k个元素转换成索引形式应该是k-1，得到所有全排列的结果集]]></description><category></category></item><item><title><![CDATA[数字涂色js]]></title><link>https://blog.youkuaiyun.com/G1useppE/article/details/125010731</link><guid>https://blog.youkuaiyun.com/G1useppE/article/details/125010731</guid><author>G1useppE</author><pubDate>Fri, 27 May 2022 21:16:09 +0800</pubDate><description><![CDATA[题目：

疫情过后，希望小学终于又重新开学了，三年二班开学第一天的任务是将后面的黑板报重新制作。黑板上已经写上了N个正整数，同学们需要给这每个数分别上一种颜色。为了让黑板报既美观又有学习意义，老师要求同种颜色的所有数都可以被这种颜色中最小的那个数整除。现在请你帮帮小朋友们，算算最少需要多少种颜色才能给这N个数进行上色。

输入描述
第一行有一个正整数N，其中1≤N≤100。
第二行有N个int型数(保证输入数据在[1,100]范围中)，表示黑板上各个正整数的值。

输出描述
输出只有一个整数，为最少需要的颜]]></description><category></category></item><item><title><![CDATA[工号不够用了怎么办？]]></title><link>https://blog.youkuaiyun.com/G1useppE/article/details/125008959</link><guid>https://blog.youkuaiyun.com/G1useppE/article/details/125008959</guid><author>G1useppE</author><pubDate>Fri, 27 May 2022 18:35:24 +0800</pubDate><description><![CDATA[题目：

3020年，空间通信集团的员工人数突破20亿人，即将遇到现有工号不够用的窘境。现在，请你负责调研新工号系统。继承历史传统，新的工号系统由小写英文字母（a-z）和数字（0-9）两部分构成。新工号由一段英文字母开头，之后跟随一段数字，

比如"aaahw0001","a12345","abcd1","a00"。注意新工号不能全为字母或者数字,允许数字部分有前导0或者全为0。但是过长的工号会增加同事们的记忆成本，现在给出新工号至少需要分配的人数X和新工号中字母的长度Y，求新工号中数字的最短长度Z。

输]]></description><category></category></item><item><title><![CDATA[用连续自然数之和来表达整数]]></title><link>https://blog.youkuaiyun.com/G1useppE/article/details/125006622</link><guid>https://blog.youkuaiyun.com/G1useppE/article/details/125006622</guid><author>G1useppE</author><pubDate>Fri, 27 May 2022 17:14:15 +0800</pubDate><description><![CDATA[题目：

一个整数可以由连续的自然数之和来表示，给定一个整数，计算该整数有几种连续自然数之和的表达式，并打印出每一种表达式。

输入描述
一个目标整数t 1&lt;= t &lt;=1000

输出描述
1.该整数的所有表达式和表达式的个数
如果有多种表达式，自然数个数最少的表达式优先输出
2.每个表达式中按自然数递增输出

具体的格式参见样例
在每个测试数据结束时，输出一行"Result:X"
其中X是最终的表达式个数
输入
9

输出
9=9
9=4+5
9=2+3+4
Result:3

说明 整数9]]></description><category></category></item><item><title><![CDATA[找出符合要求的字符串子串]]></title><link>https://blog.youkuaiyun.com/G1useppE/article/details/125001567</link><guid>https://blog.youkuaiyun.com/G1useppE/article/details/125001567</guid><author>G1useppE</author><pubDate>Fri, 27 May 2022 12:26:44 +0800</pubDate><description><![CDATA[题目:

给定两个字符串，从字符串2中找出字符串1中的所有字符，去重并按照ASCII值从小到大排序输入字符串1：长度不超过1024

输入字符串2：长度不超过1000000

字符范围满足ASCII编码要求，按照ASCII的值由小到大排序

输入描述：

bach

bbaaccedfg

输出描述：

abc

解题思路：


1、用哈希表存储字符串2中每个出现的字符，通过判断字符串1中的字符是否在字符串2中出现，如果出现就添加到新的数组中。



2、对新的数组进行排序，并转换成字符串得到最终结果。

]]></description><category></category></item><item><title><![CDATA[寻找同班小朋友js]]></title><link>https://blog.youkuaiyun.com/G1useppE/article/details/124993576</link><guid>https://blog.youkuaiyun.com/G1useppE/article/details/124993576</guid><author>G1useppE</author><pubDate>Thu, 26 May 2022 22:08:09 +0800</pubDate><description><![CDATA[题目：

幼儿园两个班的小朋友排队时混在了一起
每个小朋友都知道自己跟前面一个小朋友是不是同班
请你帮忙把同班的小朋友找出来
小朋友的编号为整数
与前面一个小朋友同班用Y表示
不同班用N表示
输入描述：
输入为空格分开的小朋友编号和是否同班标志
比如 6/N 2/Y 3/N 4/Y
表示一共有4位小朋友
2和6是同班 3和2不同班 4和3同班
小朋友总数不超过999
0&lt; 每个小朋友编号 &lt;999
不考虑输入格式错误

输出两行
每一行记录一班小朋友的编号 编号用空格分开
并且
1...]]></description><category></category></item><item><title><![CDATA[TLV解码js]]></title><link>https://blog.youkuaiyun.com/G1useppE/article/details/124977396</link><guid>https://blog.youkuaiyun.com/G1useppE/article/details/124977396</guid><author>G1useppE</author><pubDate>Thu, 26 May 2022 15:38:19 +0800</pubDate><description><![CDATA[题目：

TLV 编码是按 [ Tag Length Value ] 格式进行编码的，一段码流中的信元用Tag标识， Tag在码流中 唯一不重复 ，Length表示信元Value的长度，Value表示信元的值。

码流以某信元的Tag开头，Tag固定占 一个字节，Length固定占 两个字节，字节序为 小端序 。
现给定TLV格式编码的码流，以及需要解码的信元Tag，请输出该信元的Value。
输入码流的16进制字符中，不包括小写字母，且要求输出的16进制字符串中也不要包含小写字母；
码流字符串的最大长度不]]></description><category></category></item><item><title><![CDATA[电话号码的字母组合]]></title><link>https://blog.youkuaiyun.com/G1useppE/article/details/124893203</link><guid>https://blog.youkuaiyun.com/G1useppE/article/details/124893203</guid><author>G1useppE</author><pubDate>Sat, 21 May 2022 01:16:02 +0800</pubDate><description><![CDATA[题目：

给定一个仅包含数字 2-9 的字符串，返回所有它能表示的字母组合。答案可以按 任意顺序 返回。

给出数字到字母的映射如下（与电话按键相同）。注意 1 不对应任何字母。



示例 1：

输入：digits = "23"
输出：["ad","ae","af","bd","be","bf","cd","ce","cf"]
示例 2：

输入：digits = ""
输出：[]
示例 3：

输入：digits = "2"
输出：["a","b","c"]

提示：

0 &lt;= digits.]]></description><category></category></item><item><title><![CDATA[分割回文串js]]></title><link>https://blog.youkuaiyun.com/G1useppE/article/details/124872856</link><guid>https://blog.youkuaiyun.com/G1useppE/article/details/124872856</guid><author>G1useppE</author><pubDate>Thu, 19 May 2022 22:32:47 +0800</pubDate><description><![CDATA[题目：

给你一个字符串 s，请你将 s 分割成一些子串，使每个子串都是回文串 。返回 s 所有可能的分割方案。

回文串 是正着读和反着读都一样的字符串。

示例 1：

输入：s = "aab"
输出：[["a","a","b"],["aa","b"]]
示例 2：

输入：s = "a"
输出：[["a"]]

提示：

1 &lt;= s.length &lt;= 16
s 仅由小写英文字母组成。

解题思路：


1.题目要求返回所有的分割方案，因此可以使用回溯穷举所有的可能结果，放入到结果集当中]]></description><category></category></item><item><title><![CDATA[VLAN资源池]]></title><link>https://blog.youkuaiyun.com/G1useppE/article/details/124831990</link><guid>https://blog.youkuaiyun.com/G1useppE/article/details/124831990</guid><author>G1useppE</author><pubDate>Wed, 18 May 2022 00:28:14 +0800</pubDate><description><![CDATA[题目描述：


VLAN是一种对局域网设备进行逻辑划分的技术，为了标识不同的VLAN，引入VLAN ID(1-4094之间的整数)的概念。

定义一个VLAN ID的资源池(下称VLAN资源池)，资源池中连续的VLAN用开始VLAN-结束VLAN表示，不连续的用单个整数表示，所有的VLAN用英文逗号连接起来。

现在有一个VLAN资源池，业务需要从资源池中申请一个VLAN，需要你输出从VLAN资源池中移除申请的VLAN后的资源池。

输入描述:
第一行为字符串格式的VLAN资源池，第二行为业务要申请的VLA]]></description><category></category></item><item><title><![CDATA[数组组成的最小数字]]></title><link>https://blog.youkuaiyun.com/G1useppE/article/details/124822342</link><guid>https://blog.youkuaiyun.com/G1useppE/article/details/124822342</guid><author>G1useppE</author><pubDate>Tue, 17 May 2022 16:04:25 +0800</pubDate><description><![CDATA[题目：

最小数字：
给定一个整型数组，请从该数组中选择3个元素组成最小数字并输出（如果数组长度小于3，则选择数组中所有元素来组成最小数字）。

输入描述：
一行用半角逗号分割的字符串记录的整型数组，0 &lt; 数组长度 &lt;= 100，0 &lt; 整数的取值范围 &lt;= 10000。

输出描述：
由3个元素组成的最小数字，如果数组长度小于3，则选择数组中所有元素来组成最小数字。

示例 1：
输入
21,30,62,5,31
1
输出
21305
1
说明
数组长度超过3，需要选3个元素组成]]></description><category></category></item><item><title><![CDATA[整形数组按个位值排序js]]></title><link>https://blog.youkuaiyun.com/G1useppE/article/details/124804156</link><guid>https://blog.youkuaiyun.com/G1useppE/article/details/124804156</guid><author>G1useppE</author><pubDate>Mon, 16 May 2022 17:34:31 +0800</pubDate><description><![CDATA[题目：

给定一个非空数组（列表），其元素数据类型为整型，请按照数组元素十进制最低位从小到大进行排序，十进制最低位相同的元素，相对位置保持不变。当数组元素为负值时，十进制最低位等同于去除符号位后对应十进制值最低位。



解题思路:


1.使用哈希表存储数组元素取模后的结果，对数组元素的绝对值进行%10，直到取模结果小于10为止。

2.通过自定义排序，根据数组元素的取模结果大小来进行排序。


代码：


function sortArray(arr) {
    const map = new Ma.]]></description><category></category></item></channel></rss>