自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 计算机低能儿从0刷leetcode | 38.外观数列

重在读懂题目,其实仅仅是一个简单的递归,只需要把n-1的字符串转换一下就可以得到n的字符串,具体如下:

2024-11-12 15:12:12 801 1

原创 计算机低能儿从0刷leetcode | 36.有效的数独

1、我们分别建立三张9*9的表row、col、block。row[i][num]代表数独表的第i行中,数字num+1出现的次数(因为num的范围是0-8,而代表的数字是1-9);col[j][num]代表数独表第j列中,数字num+1出现的次数;block[k][num]代表数独表第k个块中,数字num+1出现的次数。

2024-11-12 14:04:59 243

原创 计算机低能儿从0刷leetcode | 34.在排序数组中查找元素的第一个和最后一个位置 | 二分法

1、寻找左端点。我们还是使用二分查找,依然是比mid小去左侧,比mid大去右侧。区别是当target == nums[mid]的时候,如果mid-1存在,我们判断nums[mid-1]是否也等于target,如果是就向左查找,因为左端点一定在左侧,否则向右查找。2、从确定好的左端点位置向右遍历数组,直到找到右端点。

2024-11-01 10:31:16 327

原创 计算机低能儿从0刷leetcode | 33.搜索旋转排列数组

主要思路为以下几部分:1、判断哪一侧是完全升序的。nums[l]

2024-10-30 17:46:12 326

原创 计算机低能儿从0刷leetcode | 31.下一个排列

主要过程分为三部分:1、从末尾寻找第一个nums[i] > nums[i-1]的位置,找不到就把整个数组升序排列并return.2、从末尾寻找第一个大于nums[i-1]的值,和nums[i-1]交换。3、将[i,len-1]位置升序排列。

2024-10-29 16:01:22 397

原创 计算机低能儿从0刷leetcode | 29.两数相除 | 倍增法

本题使用倍增法,这是之前从来没有接触过的方法,chatgpt的介绍是"倍增法的核心思想在于指数增长,即通过成倍增长快速接近目标,能高效地减少原本需要线性处理的计算量,使得原本可能需要多个步骤的计算转化为对数级别的快速操作"

2024-10-28 20:23:28 324

原创 计算机低能儿从0刷leetcode | 24.两两交换链表中的节点

比较简单的一道题,尽管我的代码可能不是很简短。

2024-10-05 15:06:04 208 1

原创 计算机低能儿从0刷leetcode | 22.括号生成 | 简单易懂的回溯法

首先我们明确,我们需要生成有2*n个元素的括号序列(先不考虑左右括号的配对),那么所有结果我们可以用一个树形图来表示。

2024-10-05 14:13:41 912

原创 计算机低能儿从0刷leetcode | 19.删除链表的倒数第N个结点

朴素计数+双指针解法

2024-10-02 16:04:15 256

原创 计算机低能儿从0刷leetcode | 18.四数之和

主要思路就是在之前“三数之和”的基础上再套一个for循环,即每次先固定一个数nums[i],然后从nums[i+1](用nums[j]表示)开始与之组合,即为寻找nums[j] + nums[l] + nums[r] = target - nums[i]的三元组。对于nums[i] : while(i>0&&nums[i]==nums[i-1]&&i

2024-09-25 15:41:28 368

原创 计算机低能儿从0刷leetcode | 17.电话号码的数字组合 | 回溯思想

看题解学习到这种思想叫做回溯法,学习了一下,这是建立在DFS的基础上搜索思路,还分为递归式回溯以及非递归式回溯,这道题使用的是递归回溯。原文链接:https://blog.youkuaiyun.com/u011956367/article/details/120555480。if(限界函数&&约束条件){//满足限界函数和约束条件。//结果处理(输出结果,方案计数等)...//回溯入场准备工作。...//回溯退回清理工作。void DFS(int i){//搜索第i层。if(i>n){//搜索结束。

2024-09-24 23:53:52 479

原创 计算机低能儿从0刷leetcode | 16.最接近的三数之和

和15题是很类似的思路,都是排序+双指针的方法,并且这里不需要很严格的去重操作,其实更简单一些。

2024-09-24 23:37:29 231

原创 计算机低能儿从0刷leetcode | 15.三数之和

对于每个nums[i],当nums[i]==nums[i-1]的时候要跳过,否则会导致结果重复;每次计算sum = nums[i] + nums[l] + nums[r],如果sum>0,则r--(需要寻找更小的数)、如果sum<0,则l++(需要寻找更大的数)、如果sum=0,那么l++、r--,但是在l和r移动之前一定要注意,需要用两个while循环,跳过重复的nums[l]或者nums[r],防止结果重复。

2024-09-22 22:54:29 274

原创 计算机低能儿从0刷leetcode | 12.整数转罗马数字

误区:1、假设有字符串res,res.push_back('IV')的操作是错误的,因为push_back()每次只能向末尾添加一个字符,而‘IV’很明显是两个字符,因此这时候可以使用一下两种方法:

2024-09-20 11:30:11 229

原创 计算机低能儿从0刷leetcode | 11.盛最多水的容器

题目:11. 盛最多水的容器解答:不想暴力遍历,于是让右端点j从最右侧开始遍历,每次寻找离j最远、且高度不小于height[j]的左端点i,结果发现错误,比如[1,2]的情况。于是又打补丁,按同样思路左端点i从0开始遍历,每次寻找离i最远、且高度不小于height[i]的右端点j,结果正确,然而时间复杂度并没有比暴力遍历少。于是看了题解,使用双指针的方法,这里需要明确两个要点:1、每次选择height[i]和height[j]中最小的那个,然后计算容量=(i-j) x 这个最小的高度。这一点很好理解。

2024-09-19 20:30:13 391

原创 计算机低能儿从0刷leetcode | 8. 字符串转换整数 (atoi)

题目:8. 字符串转换整数 (atoi)大致思路描述:题目写的有些复杂,但通过阅读我们发现处理主要分为以下部分:1、首先处理空格。当字符串最开始有空格存在时,把这些空格都跳过,很明显我们需要使用一个while循环.2、其次处理符号。‘+’和没有符号为正,‘-’为负。3、处理数字部分。只需要提取数字,当遇到非数字时停止即可,这里要注意s中存放的是字符,所以需要把字符转化为数字,即减去48(因为字符‘0’的十进制是48),详见下表。4、判断是否溢出。如果溢出按照要求舍去就可以了。这里强调,在此代码逻辑中,一定不

2024-09-18 22:18:22 506

原创 计算机低能儿从0刷leetcode | 7. 整数反转

用的是转化为long int的做法,也许不太符合出题的本意,不转化的方法主要侧重于数学运算,偷个小懒不想自己推完再写一遍了。

2024-09-18 21:38:18 226

原创 计算机低能儿从0刷leetcode | 6. Z 字形变换

1、对于vector的使用还是很不熟练,如果能想到用vector来做,就会简单很多/创建二维数组,然后放进去。

2024-09-18 15:39:50 216

原创 计算机低能儿从0刷leetcode | 5. 最长回文子串(踩了好多坑)

此方法看起来简单易懂,但其实有很多重要的细节,比如让我们思考以下几个问题:1、为什么这段代码中没有向左扩散的while循环呢?2、向左向右扩散时,s[l]和s[r]一定是关于s[i]对称的吗?3、这两个循环的顺序是否有严格要求?

2024-09-13 16:33:53 391

原创 计算机低能儿从0刷leetcode | 3. 无重复字符的最长子串

自己写的时候不仅没有想到滑动窗口法、只想到了暴力遍历,甚至没有想到用哈希表来查找是否有重复元素。借此机会复习了哈希表,也就是unordered_set的用法。

2024-09-13 09:52:06 194

原创 计算机低能儿从0刷leetcode | 2.两数相加

整体思路:将两个链表对应位相加,得到结果链表的相应位。细节:1.考虑到进位,本题进位只会是1,因此设置一个变量c记录上一位的进位,同时计算下一位的进位。 2.考虑到两个链表长度不一致,只需要在循环中检测链表是否到达了末尾,如果到了末尾,那么其中一个加数为0。 3.循环结束(即两个链表都到了末尾)之后,不要忘记检查是否有进位,如果有还需要再添加一个结点。

2024-09-11 15:16:38 193

原创 计算机低能儿从0刷leetcode | 35.搜索查找位置 | 二分查找

【代码】计算机低能儿从0刷leetcode | 35.搜索查找位置 | 二分查找。

2024-09-11 14:37:17 265

原创 计算机低能儿从0刷leetcode | 28.找出字符串中第一个匹配标的下标 | KMP算法之next数组的大白话理解,我都会了你也能会

用大白话理解,要找next[j],就是找到p[j]之前这段子串(注意,不包括p[j]自己)的最长相同前后缀,然后找到这个前缀的后一个位置,即为next[j]

2024-09-10 17:18:13 2247

原创 计算机低能儿从0刷leetcode | 27. 移除元素

比较愚蠢的双指针一头一尾遍历,过程中遇到了几次对于n的计数错误问题,最后索性再额外遍历了一遍。以下为宫水三叶遍历一次的题解,非常简洁。

2024-09-09 11:12:31 144

原创 计算机低能儿从0刷leetcode | 26. 删除有序数组中的重复项

该方法主要通过交换数字位置来完成目标,但是当nums中有负数存在时(如{-1,0,0,0,2,3}),就无法运行,因为flag数组的下标不能是负数。寻找未重复的数字向数组前部添加即可,因为重复的数字不可能再被添加,所以不必保留,可以直接被未重复的数字覆盖。

2024-09-07 15:56:24 234

原创 计算机低能儿从0刷leetcode | 21.合并两个有序链表

好久没有用链表,出了好多细节的错误,借机会复习一下链表的细节。

2024-09-07 14:41:34 238

原创 计算机低能儿从0刷leetcode | 20.有效的括号

最开始以为“( { )} ”也是true,后来配对的括号必须挨在一起,这样会简单一些。

2024-09-07 14:17:03 219

原创 计算机低能儿从0刷leetcode | 14.最长公共前缀

误区:最开始想使用k计数,来向res中添加元素,但是res初始化为空,不可以这样添加,而应该使用push_back()的方法(这一点借助了chatgpt哈哈哈)。将输入想象为一个二维数组,遍历不同行的同一列进行比较,都相同则加入res中。

2024-09-05 15:19:03 172

原创 计算机低能儿从0刷leetcode | 13.罗马数字转整数

【代码】计算机低能儿从0刷leetcode | 13.罗马数字转整数。

2024-09-04 21:18:11 190 1

原创 计算机低能儿从0刷leetcode | 9.回文数

是以前上课的基础题(要是世界上所有东西都是自己知道解法的题就好了)注意res如果是int会溢出。

2024-09-04 19:39:37 270

原创 计算机低能儿从0刷leetcode | 1.两数之和

可以通过,但是有很多疑问,比如输入是[3,1,3],target=6时:1、此方法让数字作为key、下标作为value,但是key按理来说不应该是独一无二的吗?2、在插入的时候为什么可以允许3--0、3--2这样的键值对存在?那么my_map[target-nums[i]应该等于多少呢,是0还是2?不应该是独一无二的吗?

2024-09-04 17:22:05 157

空空如也

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

TA关注的人

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