<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[KunkunkunL的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/KunkunkunL</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; KunkunkunL]]></copyright><item><title><![CDATA[linux ssh设置免密登录]]></title><link>https://blog.youkuaiyun.com/KunkunkunL/article/details/134439243</link><guid>https://blog.youkuaiyun.com/KunkunkunL/article/details/134439243</guid><author>KunkunkunL</author><pubDate>Thu, 16 Nov 2023 12:55:35 +0800</pubDate><description><![CDATA[在本地主机输入ssh-keygen生成密钥然后将密钥中的id_rsa.pub上传至服务器端的~/.ssh/目录下然后将其写入到中最后重启sshd服务就好了当然，上述操作需要sshd已经配置好了能够进行免密钥登陆，如果完成上述操作后还是无法免密登录，那么需要去看一下ssh的配置文件。]]></description><category></category></item><item><title><![CDATA[[35] 生命游戏 和 缺失的第一个正数]]></title><link>https://blog.youkuaiyun.com/KunkunkunL/article/details/132815987</link><guid>https://blog.youkuaiyun.com/KunkunkunL/article/details/132815987</guid><author>KunkunkunL</author><pubDate>Wed, 01 Nov 2023 16:53:44 +0800</pubDate><description><![CDATA[根据 百度百科 ，，简称为，是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机。给定一个包含m × n个格子的面板，每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态： 1 即为（live），或0即为（dead）。m x nboard。]]></description><category></category></item><item><title><![CDATA[[34]四数相加 II 和 盛最多水的容器]]></title><link>https://blog.youkuaiyun.com/KunkunkunL/article/details/132778149</link><guid>https://blog.youkuaiyun.com/KunkunkunL/article/details/132778149</guid><author>KunkunkunL</author><pubDate>Mon, 11 Sep 2023 19:28:35 +0800</pubDate><description><![CDATA[给你四个整数数组 nums1、nums2、nums3 和 nums4 ，数组长度都是 n ，请你计算有多少个元组 (i, j, k, l) 能满足：0 <= i, j, k, l < n
nums1[i] + nums2[j] + nums3[k] + nums4[l] == 0哈希表查询，把4个数组的问题拆分为两个，这样循环的复杂度会低一些。
盛最多水的容器
题目要求
给定一个长度为 n 的整数数组 height 。有 n 条垂线，第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) ]]></description><category></category></item><item><title><![CDATA[[33]除自身以外的数组的乘积 & 螺旋矩阵]]></title><link>https://blog.youkuaiyun.com/KunkunkunL/article/details/132758168</link><guid>https://blog.youkuaiyun.com/KunkunkunL/article/details/132758168</guid><author>KunkunkunL</author><pubDate>Sat, 09 Sep 2023 14:13:54 +0800</pubDate><description><![CDATA[给你一个整数数组 nums，返回 数组 answer ，其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在  32 位 整数范围内。]]></description><category></category></item><item><title><![CDATA[[31]逆波兰表达式求值和多数元素]]></title><link>https://blog.youkuaiyun.com/KunkunkunL/article/details/130692908</link><guid>https://blog.youkuaiyun.com/KunkunkunL/article/details/130692908</guid><author>KunkunkunL</author><pubDate>Tue, 16 May 2023 19:47:55 +0800</pubDate><description><![CDATA[踩坑的地方有：如何判断原始字符串中的每一个字符是不是数字，最开始用是否大于等于0小于等于9和s.isdigit()判断，但是这两种方法只能无法判断非负的数。另一个就是python负数整除的一个问题，比如6//-132，在python中得到的结果是-1，而非0。官方的题解中，一种使用栈来实现，一种是用数组，对于python来说这两种区别不大，写法上有些区别，就不再重复。输入：tokens = ["4","13","5","/","+"]输入：tokens = ["2","1","+","3","*"]]]></description><category></category></item><item><title><![CDATA[[30]分数转化为小数和两整数之和]]></title><link>https://blog.youkuaiyun.com/KunkunkunL/article/details/130625644</link><guid>https://blog.youkuaiyun.com/KunkunkunL/article/details/130625644</guid><author>KunkunkunL</author><pubDate>Sun, 14 May 2023 17:56:04 +0800</pubDate><description><![CDATA[注意到对于相同的余数，计算得到的小数的下一位数字一定是相同的，因此如果计算过程中发现某一位的余数在之前已经出现过，则为找到循环节。为了方便处理，首先根据分子和分母的正负决定结果的正负（注意此时分子和分母都不为 0），然后将分子和分母都转成正数，再计算长除法。由于给定的分子和分母的取值范围都是 [−231,231−1]，为了防止计算过程中产生溢出，需要将分子和分母转成 64 位整数表示。计算小数部分时，每次将余数乘以 10，然后计算小数的下一位数字，并得到新的余数。*内容来自leetcode。]]></description><category></category></item><item><title><![CDATA[[29]x 的平方根和两数相除]]></title><link>https://blog.youkuaiyun.com/KunkunkunL/article/details/130577839</link><guid>https://blog.youkuaiyun.com/KunkunkunL/article/details/130577839</guid><author>KunkunkunL</author><pubDate>Thu, 11 May 2023 16:34:41 +0800</pubDate><description><![CDATA[例如，8.345 将被截断为 8 ，-2.7335 将被截断至 -2。最基本的思路其实和上面的第一题求平方根类似，就是找到一个最大数与除数相乘小于被除数，从1开始遍历会超时，考虑还是二分查找。但是不一样的地方在于被除数和除数存在为负的情况，但是不论正负，算出的数是一样的，就是需要确定正负。由于最后得到的结果是整数，所以就是不用得到准确的结果，那其实就很简单了。由于返回类型是整数，结果只保留 整数部分 ，小数部分将被 舍去。让i从1开始遍历，当i*i大于x时，说明i-1即为需要的结果。]]></description><category></category></item><item><title><![CDATA[[28]Excel表列序号和Pow(x, n)]]></title><link>https://blog.youkuaiyun.com/KunkunkunL/article/details/130328183</link><guid>https://blog.youkuaiyun.com/KunkunkunL/article/details/130328183</guid><author>KunkunkunL</author><pubDate>Tue, 09 May 2023 13:01:17 +0800</pubDate><description><![CDATA[不同长度的列名称所能表示的列的个数是可以算出来的，比如一个长度为1的列所能表达的列范围为1-26，长度为2的列所能表达的范围为27-26*26，以此类推。所以可以通过列名称的长度推断出当前长度能表示的列序号的起点，比如长度为3 的列名称表示序号的起点为"AAA"表示的26*26+1。然后再根据不同的字母进行累加，比如"ACA"就是在"AAA"的基础上加26*3，最终就可以得到最后的结果。实现 pow(x, n) ，即计算 x 的整数 n 次幂函数（即，xn ）。递归的实现是根据迭代的代码改的。]]></description><category></category></item><item><title><![CDATA[[27]快乐数和阶乘后的零]]></title><link>https://blog.youkuaiyun.com/KunkunkunL/article/details/130270033</link><guid>https://blog.youkuaiyun.com/KunkunkunL/article/details/130270033</guid><author>KunkunkunL</author><pubDate>Sat, 22 Apr 2023 20:04:11 +0800</pubDate><description><![CDATA[1,n]中 p 的倍数有 n1=⌊n/p⌋个，这些数至少贡献出了 n1个质因子 p。p^2的倍数有 n2=⌊n/p^2⌋ 个，由于这些数已经是 p 的倍数了，为了不重复统计 p 的个数，我们仅考虑额外贡献的质因子个数，即这些数额外贡献了至少 n2 个质因子 p。可以用一个hashmap来记录每一次得到的数字，如果是在后续的结果中出现了之前已经出现过的数字，则不是欢乐数。但是糟糕的是，把阶乘算出来之后再去判断，很麻烦，大一点的数字就超时了。既然是要算阶乘后面的0，就得先把阶乘算出来，然后再考虑0的事。]]></description><category></category></item><item><title><![CDATA[[26]二叉树的序列化与反序列化和常数时间插入、删除和获取随机元素]]></title><link>https://blog.youkuaiyun.com/KunkunkunL/article/details/130223834</link><guid>https://blog.youkuaiyun.com/KunkunkunL/article/details/130223834</guid><author>KunkunkunL</author><pubDate>Thu, 20 Apr 2023 16:21:24 +0800</pubDate><description><![CDATA[但是一看到例子给出的输入输出，发现序列化和遍历并非一回事，给出的序列中含有null值，那也可以在树的序列中加入null值，这样就相当于在遍历的基础上增加了额外的信息，就可以反序列来得到树的结构。在本地进行测试发现，当set中存在3种元素时，循环n次，无论运行多少次，三种元素取的次数都是一样的，相较于random.choice得到的，不具有随机性。否则，返回 false。最开始的时候，考虑到不能通过任意一种遍历方式来得到原本的二叉树，因此考虑需要在序列化的时候同时得到两种遍历方式的结果，好像很麻烦。]]></description><category></category></item><item><title><![CDATA[[25]零钱兑换和最长递增子序列]]></title><link>https://blog.youkuaiyun.com/KunkunkunL/article/details/130156186</link><guid>https://blog.youkuaiyun.com/KunkunkunL/article/details/130156186</guid><author>KunkunkunL</author><pubDate>Tue, 18 Apr 2023 15:48:33 +0800</pubDate><description><![CDATA[例如，[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。最初的想法是，一直叠加最大的，如果超过了sum，则开始叠加第二大的，以此类推。否则，在 d 数组中二分查找，找到第一个比 nums[i]小的数 d[k]，并更新 d[k+1]=nums[i]。所有的动态规划的思路都是以之前的状态为基础进行递推的，就需要找到合适的状态转移方程。输入：nums = [10,9,2,5,3,7,101,18]输入：nums = [0,1,0,3,2,3]*内容来自leetcode。]]></description><category></category></item><item><title><![CDATA[[24]跳跃游戏和不同路径]]></title><link>https://blog.youkuaiyun.com/KunkunkunL/article/details/130105242</link><guid>https://blog.youkuaiyun.com/KunkunkunL/article/details/130105242</guid><author>KunkunkunL</author><pubDate>Fri, 14 Apr 2023 16:06:08 +0800</pubDate><description><![CDATA[以一个数组来看，向下为1，向右为2，那么数组中1和2的个数是一定的，只是顺序问题，所以只需要找到全部的排序方式就可以了，在数学上来说就是一个排列组合问题。如果需要每一个路径的全部过程，可以考虑回溯算法，但是此题只需要总的路径数。由于我们每一步只能从向下或者向右移动一步，因此要想走到 (i,j)，如果向下走一步，那么会从 (i−1,j)(i-1, j)(i−1,j) 走过来；官方给出的思路是维护最大可达距离，如果最大可达超过最后一个数的位置，则说明可达，如果到最后还是小于最后一个数的位置，则说明不可达。]]></description><category></category></item><item><title><![CDATA[[23]搜索旋转排序数组和搜索二维矩阵 II]]></title><link>https://blog.youkuaiyun.com/KunkunkunL/article/details/130057374</link><guid>https://blog.youkuaiyun.com/KunkunkunL/article/details/130057374</guid><author>KunkunkunL</author><pubDate>Wed, 12 Apr 2023 13:32:51 +0800</pubDate><description><![CDATA[在传递给函数之前，nums 在预先未知的某个下标 k（0 ]]></description><category></category></item><item><title><![CDATA[[22]在排序数组中查找元素的第一个和最后一个位置和合并区间]]></title><link>https://blog.youkuaiyun.com/KunkunkunL/article/details/129969325</link><guid>https://blog.youkuaiyun.com/KunkunkunL/article/details/129969325</guid><author>KunkunkunL</author><pubDate>Mon, 10 Apr 2023 12:21:20 +0800</pubDate><description><![CDATA[请你合并所有重叠的区间，并返回 一个不重叠的区间数组，该数组需恰好覆盖输入中的所有区间。两个区间有没有重叠的条件为，区间1的右端点大于区间2的左端点，且区间1的左端点小于区间2的右端点。否则，它们重合，我们需要用当前区间的右端点更新数组 merged 中最后一个区间的右端点，将其置为二者的较大值。输入：intervals = [[1,3],[2,6],[8,10],[15,18]]解释：区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].输出：[[1,6],[8,10],[15,18]]]]></description><category></category></item><item><title><![CDATA[[21]数组中的第K个最大元素和寻找峰值]]></title><link>https://blog.youkuaiyun.com/KunkunkunL/article/details/129931322</link><guid>https://blog.youkuaiyun.com/KunkunkunL/article/details/129931322</guid><author>KunkunkunL</author><pubDate>Tue, 04 Apr 2023 18:37:13 +0800</pubDate><description><![CDATA[在上述算法中，如果我们固定选取 i 为 [l,r]的中点，那么每次可行的下标范围会减少一半，成为一个类似二分查找的方法，时间复杂度为 O(log⁡n)。如果 nums[i]<nums[i+1]，那么我们抛弃 [l,i]的范围，在剩余 [i+1,r]的范围内继续随机选取下标；如果 nums[i]>nums[i+1]，那么我们抛弃 [i,r]的范围，在剩余 [l,i−1]的范围内继续随机选取下标。请注意，你需要找的是数组排序后的第 k 个最大的元素，而不是第 k 个不同的元素。]]></description><category></category></item><item><title><![CDATA[[20]颜色分类和前k个高频元素（堆的使用）]]></title><link>https://blog.youkuaiyun.com/KunkunkunL/article/details/129833192</link><guid>https://blog.youkuaiyun.com/KunkunkunL/article/details/129833192</guid><author>KunkunkunL</author><pubDate>Mon, 03 Apr 2023 13:41:32 +0800</pubDate><description><![CDATA[这里需要注意的一个问题是，在堆中的数据是以(x,y)的形式存在时，默认是以x来进行大小的判断的，而这道题中是要以计数的大小，也就是y来进行判断，所以在写入堆和判断时需要交换一下num和val的次序。写完这个再回去看我写的，有种原始的美感。这样考虑的问题在于忽略了nums中的数的大小是有可能比数组的大小更大的，就不能让记录数组的大小为nums数组的大小。值得一提的是，由于排序是通过调用sortColors()这个函数来完成的，最后修改原数组时使用的是nums[:]，如果使用nums，则原数组不会有任何变化。]]></description><category></category></item><item><title><![CDATA[[19]子集和单词搜索]]></title><link>https://blog.youkuaiyun.com/KunkunkunL/article/details/129799367</link><guid>https://blog.youkuaiyun.com/KunkunkunL/article/details/129799367</guid><author>KunkunkunL</author><pubDate>Tue, 28 Mar 2023 16:04:07 +0800</pubDate><description><![CDATA[子集和单词搜索]]></description><category></category></item><item><title><![CDATA[[18]括号生成和全排列]]></title><link>https://blog.youkuaiyun.com/KunkunkunL/article/details/129748566</link><guid>https://blog.youkuaiyun.com/KunkunkunL/article/details/129748566</guid><author>KunkunkunL</author><pubDate>Sat, 25 Mar 2023 13:53:41 +0800</pubDate><description><![CDATA[括号生成和全排列]]></description><category></category></item><item><title><![CDATA[[17]岛屿数量和电话号码的字母组合]]></title><link>https://blog.youkuaiyun.com/KunkunkunL/article/details/129685997</link><guid>https://blog.youkuaiyun.com/KunkunkunL/article/details/129685997</guid><author>KunkunkunL</author><pubDate>Fri, 24 Mar 2023 12:55:43 +0800</pubDate><description><![CDATA[回溯过程中维护一个字符串，表示已有的字母排列（如果未遍历完电话号码的所有数字，则已有的字母排列是不完整的）。每次取电话号码的一位数字，从哈希表中获得该数字对应的所有可能的字母，并将其中的一个字母插入到已有的字母排列后面，然后继续处理电话号码的后一位数字，直到处理完电话号码中的所有数字，即得到一个完整的字母排列。直到队列为空，搜索结束。回溯算法用于寻找所有的可行解，如果发现一个解不可行，则会舍弃不可行的解。在这道题中，由于每个数字对应的每个字母都可能进入字母组合，因此不存在不可行的解，直接穷举所有的解即可。]]></description><category></category></item><item><title><![CDATA[[16]填充每个节点的下一个右侧节点指针和二叉搜索树中第K小的元素]]></title><link>https://blog.youkuaiyun.com/KunkunkunL/article/details/129650043</link><guid>https://blog.youkuaiyun.com/KunkunkunL/article/details/129650043</guid><author>KunkunkunL</author><pubDate>Tue, 21 Mar 2023 12:43:16 +0800</pubDate><description><![CDATA[填充每个节点的下一个右侧节点指针和二叉搜索树中第K小的元素]]></description><category></category></item></channel></rss>