自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 LeetCode142-环形链表Ⅱ

在这道题中链表就只有两种情况:有环或者无环,无环的话还是很好解决的,只要遍历到末尾链表指向空就行了,但是有环的话这就不可取了,这样会陷入死循环,若考虑双指针暴力的方法好像是可行的其实也是不可行的,也会选入死循环,但是我们可以在双指针的基础上对这道题进行解答。

2023-11-20 17:11:13 40 1

原创 队列(数组模拟队列和数组模拟循环队列)

1.队列是一个有序列表,可以用数组或者链表来实现2.遵循先入先出的原则。

2023-10-28 00:36:54 52 1

原创 二维数组转换为稀疏数组

当一个数组的大部分元素为同一个元素时可以使用稀疏数组来保存该数组。

2023-10-26 20:59:29 36

原创 两种数据结构

数据结构分为线性结构和非线性结构。

2023-10-26 20:43:45 38

原创 LeetCode22-括号生成

在上面代码中的递归并没有简单的直接将括号直接加入数组中,而是进行了相应的筛选择下一步应该加入的括号,因为只有当count>=0的时候组合才是有可能符合要求的此时可以进行下一步的递归,若小于0该组合就不可能符合要求了可以直接放弃这种组合了,若组合的count=0要是再加入右括号该组合的count就会小于0,所以这时组合只能加入左括号。

2023-10-08 23:23:07 31 1

原创 LeetCode-179最大数

然后我们再考虑位数不同的情况,位数不同的话我们要从最后一位开始比较两个数,我们假设a是一个三位数,b是一个四位数,在比较这两个数时我们就需要将a的百位和b的千位进行比较,a的十位和b的百位进行比较...直到比较出哪一个数更大这个数就应该排在前面,但是如果a的后三位和b的后三位数字都是一样的话这样就无法比较出结果了,这样就只有分别将a排在前b排在后和b排在前面a排在后面,再比较两种排序的结果就可以知道哪个数字应该排在前面了。

2023-09-03 00:50:25 40

原创 LeetCode-75颜色分类

首先我们需要一个循环,在这个循环里面我们定义一个索引i从0索引处开始遍历数组,在遇到非0的数nums[i]时我们就进入另一个循环,在这个循环定义索引j从i+1开始遍历后面的数组,直到找到第一个0是nums[j],将这个nums[j]与i标记的nums[i]交换位置就可以了,在交换位置时我们需要判断j

2023-08-30 21:16:46 50 1

原创 LeetCode-204计数质数

使用埃氏筛来判断质数首先我们需要一个有序的数对,我们可以直接定义一个长度为n的数组,用数组的索引代表数字,这样有序数对就有了,而数组里面我们用值0和1来代表此处的索引是质数还是合数,我们首先默认所有的数都是质数,我们从第一个质数2开始判断,将质数的倍数全部都标记出来,又由于合数是小于它的质数的倍数,所以所有的合数都可以被找出,而剩下的就是我们需要计数的质数。下面是代码的书写过程。下面是埃氏筛的核心思想。

2023-08-21 15:43:33 55 2

原创 LeetCode-5最长回文子串

核心思路:所有的回文字符串都是关于中心对称的,所以我们可以先找到整个回文字符串的中心,再向两边进行扩展就可以计算得到整个回文字符串了。还有就是如何得到最大的回文字符串,如果我们先定义一个空的字符串每次都将得到的新的回文字符串进行存储再和旧的回文字符串进行大小比较会十分的麻烦,我们这里就可以采用双指针的方法,每次只需要记录回文字符串的起始索引位置和结束索引位置,就可以根据索引得到回文字符串的大小,在和上一个回文字符串的大小进行比较后对指针进行更新就行了。下面是得到最长回文字符串的代码部分。

2023-08-17 22:36:12 26 1

原创 LeetCode-453最小操作次数使数组元素相等

核心思想:我们可以从另一种角度进行思考本题,每次操作都会对除了最大元素以外的元素进行加一,这对于总体来说就相当于将最大元素减一,这样的话每次操作中就只需要对一个元素进行操作,就不需要对其它元素进行操作,并且将其它元素增大的话我们还需要考虑最大值不止一个,这样的话每次操作中都需要重新寻找最大值,但是我们如果只需要找到最小值的话我们就只需要计算其它值减小到最小值需要的操作步骤就行了,不需要每次都对最小值进行寻找,这样的话大大的提高了代码的运行效率。下面是代码的书写步骤。nums[i]>nums[0]的判断了。

2023-08-15 00:11:11 169

原创 LeetCode-74搜索二位矩阵

2.核心思想:将二分查找应用在二维数组中我们最先想到的方法就是重新定义一个新的一维数组,再将二维数组中的数字转换到一维数组中,在使用二分查找,但是这样的话不但会像遍历一样超时还会浪费电脑的内存,但是将二维数组拉直这个思想是没有错的,但是要如何将二维数组拉直,但是又不需要像遍历一样浪费时间也不需要定义一个新数组呢?我们用n表示比较的二维数组中的第n个数,row表示第n个数在二维数组中的行数,column表示第n个数在二维数组中的列数。其它部分就和一维数组中应用二分查找一样了,下面是整体代码。

2023-08-08 20:27:38 27

原创 LeetCode-91解码方法

所以我们就可以看出来两道题的核心思想的不同之处也就在这里了,我们再写代码的时候我们就需要进行判断,然后选择相对应的公式进行计算,而且我们通过字符串的前两个字符的判断也很容易得到前两个数字的方法数,我们只需要再循环中进行循环的相加和判断就可以得出结果了。值得注意的是在这里存在这一个无法形成两位数也无法形成一个单独的一位数的特殊情况,这种情况就是当第一个数字大于2且第二个数字等于0和第一个数字等于0时,这样的话方法数就直接为0,直接返回0就可以了(第一个数字为0的情况在前面会进行排除,这里就无需进行排除)。

2023-08-01 21:29:53 61 5

原创 LeetCode-爬楼梯

2.算法实现:我们用n表示爬了n阶台阶,所以走上n阶台阶的方法就有f(n)表示爬上n阶台阶的方法,所以f(n)=f(n-1)+f(n-2);1.核心思想:在这个问题中,我们要是利用高中的排序方法进行计算,算法将会变得十分复杂,我们直接从结果开始思考,走n阶台阶(n>=3),最后一步有两种走法,走一步或者走两步,所以走n阶台阶的走法就可以由n-1阶台阶走法加上n-2阶台阶走法获得。需要注意的是,在上面的代码中我们需要特别考虑n=1时的特殊情况,当n=1时我们就可以直接返回a或者1。

2023-07-31 16:29:35 34 3

原创 LeetCode-N字型变换

在创建二维数组的数组的行数很容易确定,就是方法中给定的参数numRows,但是这里的列数就不是很好确定了,但是经过观察发现转换后的N型字符可以通过分组确定列数,这里的分组就是将转换成的N型按照一列和下一列前面的倾斜的一串字符分为一组,这样N型字符就总是可以分成整组数和一个不是完整的组数,这样我们只要知道一组有多少列,那一个不完整的组数有多少列和一共有多少组我们就可以计算出我们创建的二维数组一共有多少列。按照下面的方法就可以将字符串存入数组。2.字符串的长度小于numRows时可以直接返回给到的字符串s。

2023-07-31 11:33:33 72 2

空空如也

空空如也

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

TA关注的人

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