自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 LeetCode面试经典150题之——加油站

2.如果不属于上面的情况,也就是赚的总的还比不上花的,那么剩下的就只能是肯定可以跑完一圈的情况了。我们可以从第一个加油站开始遍历一遍来确认起点:用当前加油站的gas减去cost,可以得到经过这个加油站油量的剩余,如果GasRest>0,说明可以到达下一个加油站,如此反复直到碰到一个加油站使得GasRest<0,也就是说,从第一个加油站到不了这个加油站,那么中间的加油站一样到不了。因为我们已经排除了不可能绕一圈的情况,那么既然有一段路的油不够,那剩下的油肯定是有多的,所以只需要一次遍历就可以。

2024-03-08 19:04:24 391 1

原创 LeetCode面试经典150题之最长连续序列

2.为确定最长连续序列,我们需要找到每一个可能序列的最小数,也就是龙头,以此为基础向上寻找+1的数来连续。3.遍历每一个数来寻找每一个数可能得最长序列,并与原来的比较取最大。,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。1.首先要将重复的元素删除,用哈希表来处理为佳。因为不需要用到键值对,所以用unordered_set为佳。请你设计并实现时间复杂度为。给定一个未排序的整数数组。

2024-03-07 21:09:16 385

原创 LeetCode面试经典150题之——快乐数

我们假设一个数为快乐数,那么这个快乐数在进行了拆解平方和之后再拆解平方和再拆解平方和最后一定是等于1的,也就是有尽头的。而不能成为快乐数的逻辑也就很清晰了,我们判断他不能成为一个快乐数的方法就是一个数的拆解平方和操作最终要么是一个循环,要么每一次操作都会让数字变得更大。编写一个算法来判断一个数。

2024-03-07 19:42:42 411

原创 Leetcode面试经典150题之——两数之和

遍历hs没有与之配对的,将nums[i]和i存入hs,以{3(nums[0]的值),0(索引,位置)}存储在hs中。括号内填需要查找的哈希表值,如果找到,返回该指向键值对的迭代器,具体取键或值分别用如下方法查找,如果没找到,返回该哈希表的末尾;整数,并返回它们的数组下标。

2024-03-05 21:56:36 394 1

原创 LeetCode面试经典150题之同构字符串

那么右边的就是判断s2t这个哈希表内的键为X的字符映射Y1和此时t字符串中映射位置的字符Y2是否相等,如果相等,自然而然是一对一的映射,因为至少从目前来看X全部映射到Y1上。这个代码是什么意思,我们庖丁解牛:.find()成员函数是用于搜索容器中的某个元素,在哈希表中表现为搜索键,如果寻到目标键,返回指向该键的迭代器,如果没有找到,返回该容器的end()。那一对多和多对一的映射判断要怎么写呢,我们单从一对多来看,当我们写出来一对多的判断情况,多对一的判断也就水到渠成了。,那么这两个字符串是同构的。

2023-12-13 20:19:48 361 1

原创 LeetCode面试经典150题之螺旋矩阵

我们已经设计好了新边界的执行代码,那么又该如何设置跳出循环的,也就是已经完成输出的呢,这里的一个思路是,如果边界交叉,那么我们可以认定已经完成输出。问号中的就是我们暂时不知道要填什么的东西 ,以及我们还缺少的重新设定边界的部分。说实话,刚做这题看着思路简单,但实际上自己上手还是有点困难,首先我们把框架写好。然后根据逻辑我们就可以推出来。,返回矩阵中的所有元素。题目简单易懂:给你一个。

2023-12-10 23:10:56 426 1

原创 LeetCode面试经典150题之有效的数独

我们观察,当column=0-2时,我们都被归为0或3或6格中,也就是每行的第0个,当column=3-5时,都被归为1或4或7中,也就是每行的第1个方格中,当column=6-8时,都被归为2或5或8,也就是每行的第2个方格中。题目判断条件可以说给的非常清晰了,只需要判断那三个条件,别看判断数独是否可行看上去这么生僻,恐怕不给提示没有几个人能知道,所以只要直接遍历判断就好了,这里简单讲讲思路,注释会附在代码中,同时会对一些可能的疑问做解答。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。

2023-12-10 20:54:49 425 1

原创 leetcode面试经典150题之最小覆盖子串

当左边沿收录到的字符已经满足要求的时候:比如说我们在ABBA的后面紧接着来了一个C,那么在收录到C的时候,我们cnt增加到与t.size()相同,说明我们左右边沿框选住的字符串里已经包含了目标字符串t中的所有字符,这个时候就可以收缩左指针,让我们的长度精简,此时会检查我们框选的最左侧,也就是lp所指向的字符“A”,显然ABBAC中的A数量为2,超过了目标字符“ABC”中的数量1,因此我们将其精简,将lp收缩,框选的字符串变为BBAC,但是此时我们数量依然是满足要求的,所以cnt不会减。所有字符的最小子串。

2023-12-10 00:13:55 406 1

原创 LeetCode面试经典150题之无重复字符的最长子串

旨在记录我理解感悟的过程,以及用尽量通俗易懂的语言帮助和我一样没什么基础的人。前几行没什么好讲,主要是定义了一些必要的变量,由于我们是采用滑动窗口的思想,所以一定的会有left和right两个变量 ,还有一个存储最大字符串长度的变量。代码的意思是,如果找到了,find就会返回那个元素的迭代器,自然不等于end(),所以会进入循环,将左指针代表的元素抹除,并将左指针向右移动一位。判断完是否有重复元素之后,判断新的长度和原来的长度哪个更大,更新最大值,同时插入新的右值以供下一轮判断重复元素。

2023-09-26 11:17:32 51 1

原创 C++简单小项目之贪吃蛇

可以看到大叔的代码其实只定义了两个方向:相对于小蛇前进方向的左右方向,这是不太符合我们的操作习惯的,会带来这个问题:如果小蛇是向下移动的,我们想让小蛇向我们的左边前进,我们会下意识按左方向键,但是实际上这是相对小蛇的左边,因此小蛇实际会往我们 期望的反方向跑......这是我们不希望看到的......当然我这里是对老哥的视频做的贪吃蛇的代码的一些详解,因为我自己看他的视频的时候看的云里雾里的,他并没有将所有细节都讲清楚。通过这行代码,我们创建了一个可以存储游戏屏幕信息的缓冲区。

2023-09-08 21:32:51 400 1

原创 LeetCode经典面试150题之乘最多水的容器

这种思路就是常见的双指针:使用两个指针,一个位于数组的开头,一个位于数组的末尾。它计算当前指针位置的容器容量,然后将指针向中间移动,每次移动都选择高度较小的一侧,因为这样才有可能找到更高的垂直线,从而可能得到更大的容器容量。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。简单是简单,但是显而易见的,for嵌套的时间复杂度过大,对性能要求较高,我们可以试着用另一种思路优化我们的代码。轴共同构成的容器可以容纳最多的水。

2023-09-03 12:52:51 116

原创 LeetCode经典150题之两数之和 II - 输入有序数组

1 与 0 之和等于目标数 -1。因此 index1 = 1, index2 = 2。返回 [1, 2]。2 与 7 之和等于目标数 9。因此 index1 = 1, index2 = 2。返回 [1, 2]。2 与 4 之和等于目标数 6。因此 index1 = 1, index2 = 3。返回 [1, 3]。非常简单的一道题,代码也非常易懂,我们直接上代码吧。你所设计的解决方案必须只使用常量级的额外空间。,请你从数组中找出满足相加之和等于目标数。的形式返回这两个整数的下标。

2023-09-02 18:12:03 29

原创 LeetCode面试经典150题之判断子序列

字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。

2023-09-02 17:18:03 57

原创 LeetCode面试经典150题之验证回文串

如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个。"amanaplanacanalpanama" 是回文串。在移除非字母数字字符之后,s 是一个空字符串 ""。由于空字符串正着反着读都一样,所以是回文串。"raceacar" 不是回文串。字母和数字都属于字母数字字符。整体时间复杂度为O(n)

2023-09-01 22:37:04 44 1

原创 LeetCode面试经典150题之除自身以外数组的乘积

,这就有了很大的优化空间,我们试着把他优化以下,优化思路是怎样的呢,我们可以构造三个数组,一个数组存储目标元素左边的值,一个数组存放目标元素右边的值,第三个数组将两数组结果对应相乘就可以得到结果啦。这是一道非常简单的题,想要写出答案其实非常简单,主要考虑的是优化问题,写这篇博客的目的也就是记录一下心得。这是我脑海中看完题目立刻浮现出来的答案,两次遍历容器得到答案。执行是完全没有问题的,只是时间复杂度是O(

2023-08-31 17:27:20 55

原创 LeetCode面试经典150题之反转字符串中的单词

中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。有一种思路是双指针,从后往前寻找每一个单词,并将其加到ret中。如果两个单词间有多余的空格,反转后的字符串需要将单词间的空格减少到仅有一个。反转后的字符串中不能存在前导空格和尾随空格。中使用至少一个空格将字符串中的。之间用单个空格连接的结果字符串。是由非空格字符组成的字符串。

2023-08-30 17:35:02 40

原创 基于实操的学生演讲比赛系统设计

其实用冒泡排序是最低效的方法,c++已经内置了排序函数sort(),但是sort是对元素直接排序,并不能对元素中某一子元素,比如依据struct a中的b变量的大小对struct进行排序,因此我们需要自己写一个CompareA函数来实现。现在我们就定义了比赛正式开始前需要定义的操作。不不不,因为我们比赛系统是在while函数中不断循环执行,我们连续比两届赛的时候,由于没有对上一次存储在容器中的数据进行处理,后续会出现错误,这是我们不希望看到的,所以我们还需要在每一届比赛结束之后再次处理一下容器。

2023-08-08 14:44:38 35

空空如也

空空如也

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

TA关注的人

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