自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 收藏
  • 关注

原创 linux ssh设置免密登录

在本地主机输入ssh-keygen生成密钥然后将密钥中的id_rsa.pub上传至服务器端的~/.ssh/目录下然后将其写入到中最后重启sshd服务就好了当然,上述操作需要sshd已经配置好了能够进行免密钥登陆,如果完成上述操作后还是无法免密登录,那么需要去看一下ssh的配置文件。

2023-11-16 12:55:35 101

原创 [35] 生命游戏 和 缺失的第一个正数

根据 百度百科 ,,简称为,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机。给定一个包含m × n个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态: 1 即为(live),或0即为(dead)。m x nboard。

2023-11-01 16:53:44 75

原创 [34]四数相加 II 和 盛最多水的容器

给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足:0 <= i, j, k, l < nnums1[i] + nums2[j] + nums3[k] + nums4[l] == 0哈希表查询,把4个数组的问题拆分为两个,这样循环的复杂度会低一些。盛最多水的容器题目要求给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i])

2023-09-11 19:28:35 80

原创 [33]除自身以外的数组的乘积 & 螺旋矩阵

给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。

2023-09-09 14:13:54 81

原创 [31]逆波兰表达式求值和多数元素

踩坑的地方有:如何判断原始字符串中的每一个字符是不是数字,最开始用是否大于等于0小于等于9和s.isdigit()判断,但是这两种方法只能无法判断非负的数。另一个就是python负数整除的一个问题,比如6//-132,在python中得到的结果是-1,而非0。官方的题解中,一种使用栈来实现,一种是用数组,对于python来说这两种区别不大,写法上有些区别,就不再重复。输入:tokens = ["4","13","5","/","+"]输入:tokens = ["2","1","+","3","*"]

2023-05-16 19:47:55 73

原创 [30]分数转化为小数和两整数之和

注意到对于相同的余数,计算得到的小数的下一位数字一定是相同的,因此如果计算过程中发现某一位的余数在之前已经出现过,则为找到循环节。为了方便处理,首先根据分子和分母的正负决定结果的正负(注意此时分子和分母都不为 0),然后将分子和分母都转成正数,再计算长除法。由于给定的分子和分母的取值范围都是 [−231,231−1],为了防止计算过程中产生溢出,需要将分子和分母转成 64 位整数表示。计算小数部分时,每次将余数乘以 10,然后计算小数的下一位数字,并得到新的余数。*内容来自leetcode。

2023-05-14 17:56:04 59

原创 [29]x 的平方根和两数相除

例如,8.345 将被截断为 8 ,-2.7335 将被截断至 -2。最基本的思路其实和上面的第一题求平方根类似,就是找到一个最大数与除数相乘小于被除数,从1开始遍历会超时,考虑还是二分查找。但是不一样的地方在于被除数和除数存在为负的情况,但是不论正负,算出的数是一样的,就是需要确定正负。由于最后得到的结果是整数,所以就是不用得到准确的结果,那其实就很简单了。由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去。让i从1开始遍历,当i*i大于x时,说明i-1即为需要的结果。

2023-05-11 16:34:41 71

原创 [28]Excel表列序号和Pow(x, n)

不同长度的列名称所能表示的列的个数是可以算出来的,比如一个长度为1的列所能表达的列范围为1-26,长度为2的列所能表达的范围为27-26*26,以此类推。所以可以通过列名称的长度推断出当前长度能表示的列序号的起点,比如长度为3 的列名称表示序号的起点为"AAA"表示的26*26+1。然后再根据不同的字母进行累加,比如"ACA"就是在"AAA"的基础上加26*3,最终就可以得到最后的结果。实现 pow(x, n) ,即计算 x 的整数 n 次幂函数(即,xn )。递归的实现是根据迭代的代码改的。

2023-05-09 13:01:17 57

原创 [27]快乐数和阶乘后的零

1,n]中 p 的倍数有 n1=⌊n/p⌋个,这些数至少贡献出了 n1个质因子 p。p^2的倍数有 n2=⌊n/p^2⌋ 个,由于这些数已经是 p 的倍数了,为了不重复统计 p 的个数,我们仅考虑额外贡献的质因子个数,即这些数额外贡献了至少 n2 个质因子 p。可以用一个hashmap来记录每一次得到的数字,如果是在后续的结果中出现了之前已经出现过的数字,则不是欢乐数。但是糟糕的是,把阶乘算出来之后再去判断,很麻烦,大一点的数字就超时了。既然是要算阶乘后面的0,就得先把阶乘算出来,然后再考虑0的事。

2023-04-22 20:04:11 39

原创 [26]二叉树的序列化与反序列化和常数时间插入、删除和获取随机元素

但是一看到例子给出的输入输出,发现序列化和遍历并非一回事,给出的序列中含有null值,那也可以在树的序列中加入null值,这样就相当于在遍历的基础上增加了额外的信息,就可以反序列来得到树的结构。在本地进行测试发现,当set中存在3种元素时,循环n次,无论运行多少次,三种元素取的次数都是一样的,相较于random.choice得到的,不具有随机性。否则,返回 false。最开始的时候,考虑到不能通过任意一种遍历方式来得到原本的二叉树,因此考虑需要在序列化的时候同时得到两种遍历方式的结果,好像很麻烦。

2023-04-20 16:21:24 47

原创 [25]零钱兑换和最长递增子序列

例如,[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。

2023-04-18 15:48:33 37

原创 [24]跳跃游戏和不同路径

以一个数组来看,向下为1,向右为2,那么数组中1和2的个数是一定的,只是顺序问题,所以只需要找到全部的排序方式就可以了,在数学上来说就是一个排列组合问题。如果需要每一个路径的全部过程,可以考虑回溯算法,但是此题只需要总的路径数。由于我们每一步只能从向下或者向右移动一步,因此要想走到 (i,j),如果向下走一步,那么会从 (i−1,j)(i-1, j)(i−1,j) 走过来;官方给出的思路是维护最大可达距离,如果最大可达超过最后一个数的位置,则说明可达,如果到最后还是小于最后一个数的位置,则说明不可达。

2023-04-14 16:06:08 46

原创 [23]搜索旋转排序数组和搜索二维矩阵 II

在传递给函数之前,nums 在预先未知的某个下标 k(0

2023-04-12 13:32:51 45

原创 [22]在排序数组中查找元素的第一个和最后一个位置和合并区间

请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。两个区间有没有重叠的条件为,区间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]]

2023-04-10 12:21:20 61

原创 [21]数组中的第K个最大元素和寻找峰值

在上述算法中,如果我们固定选取 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 个不同的元素。

2023-04-04 18:37:13 107

原创 [20]颜色分类和前k个高频元素(堆的使用)

这里需要注意的一个问题是,在堆中的数据是以(x,y)的形式存在时,默认是以x来进行大小的判断的,而这道题中是要以计数的大小,也就是y来进行判断,所以在写入堆和判断时需要交换一下num和val的次序。写完这个再回去看我写的,有种原始的美感。这样考虑的问题在于忽略了nums中的数的大小是有可能比数组的大小更大的,就不能让记录数组的大小为nums数组的大小。值得一提的是,由于排序是通过调用sortColors()这个函数来完成的,最后修改原数组时使用的是nums[:],如果使用nums,则原数组不会有任何变化。

2023-04-03 13:41:32 49

原创 [19]子集和单词搜索

子集和单词搜索

2023-03-28 16:04:07 44

原创 [18]括号生成和全排列

括号生成和全排列

2023-03-25 13:53:41 135

原创 [17]岛屿数量和电话号码的字母组合

回溯过程中维护一个字符串,表示已有的字母排列(如果未遍历完电话号码的所有数字,则已有的字母排列是不完整的)。每次取电话号码的一位数字,从哈希表中获得该数字对应的所有可能的字母,并将其中的一个字母插入到已有的字母排列后面,然后继续处理电话号码的后一位数字,直到处理完电话号码中的所有数字,即得到一个完整的字母排列。直到队列为空,搜索结束。回溯算法用于寻找所有的可行解,如果发现一个解不可行,则会舍弃不可行的解。在这道题中,由于每个数字对应的每个字母都可能进入字母组合,因此不存在不可行的解,直接穷举所有的解即可。

2023-03-24 12:55:43 64

原创 [16]填充每个节点的下一个右侧节点指针和二叉搜索树中第K小的元素

填充每个节点的下一个右侧节点指针和二叉搜索树中第K小的元素

2023-03-21 12:43:16 45

原创 [15]和有限的最长子序列和从前序与中序遍历序列构造二叉树

如果 u 没有右儿子,我们就会向上回溯,直到遇到第一个有右儿子(且 u 不在它的右儿子的子树中)的节点 ua,那么 v 就是 ua的右儿子。由于同一颗子树的前序遍历和中序遍历的长度显然是相同的,因此我们就可以对应到前序遍历的结果中,对上述形式中的所有左右括号进行定位。这样以来,我们就知道了左子树的前序遍历和中序遍历结果,以及右子树的前序遍历和中序遍历结果,我们就可以递归地对构造出左子树和右子树,再将这两颗子树接到根节点的左右位置。这是因为在遍历到 u 之后,下一个遍历的节点就是 u 的左儿子,即 v;

2023-03-19 13:46:39 79

原创 [14]二叉树的中序遍历和二叉树的锯齿形层次遍历

二叉树的中序遍历和二叉树的锯齿形层次遍历

2023-03-16 17:30:02 43

原创 [13] 奇偶链表和相交链表

奇偶链表和相交链表

2023-03-15 11:12:04 255

原创 [12]递增的三元子序列和两数相加

如果存在这样的三元组下标 (i, j, k) 且满足 i < j < k ,使得 nums[i] < nums[j] < nums[k] ,返回 true;既然超时那就只能寻找别的办法,略微看了一点评论区的解答,启发到可以通过记录最小和第二小的数字来查看是否满足条件,时间复杂度和空间复杂度分别为O(n)和O(1)。最直观的办法就是通过链表得到两个加数,再将得到的和按要求写入一个新的链表中。由于输入的两个链表都是逆序存储数字的位数的,因此两个链表中同一位置的数字可以直接相加。题目来自leetcode。

2023-03-12 14:40:34 28

原创 [11] 无重复的最长字串和最长回文字串

无重复的最长字串和最长回文字串

2023-03-07 14:41:30 125

原创 [10] 矩阵置零和字母异位词分组

矩阵置零和字母异位词分组

2023-03-05 14:12:00 85

原创 [9] 三数之和

三数和

2023-03-04 15:46:34 60

原创 [8] 最长公共前缀

最长公共前缀

2023-03-03 14:43:01 64

原创 [7] 旋转图像和外观数列

旋转图像和外观数列

2023-03-02 21:03:03 49

原创 [6] 有效的数独

九宫格

2023-03-01 17:54:37 135

原创 [5] 有效的括号和缺失数字

有效的括号和缺失数字

2023-02-28 14:41:11 51

原创 [4] 颠倒二进制位和杨辉三角

颠倒二进制位和杨辉三角

2023-02-27 20:36:33 113

原创 [3] 位1的个数 和 汉明距离

位1的个数 和 汉明距离

2023-02-25 12:06:47 38

原创 [2] 3的幂和罗马数字转整数

3的幂和罗马数字

2023-02-24 16:20:53 51

原创 [1]Fizz Buzz 和计数质数

做题总结,FizzBuzz和质数计数

2023-02-23 18:26:20 148 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除