自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 LeetCode 热题 100-128题【哈希】

利用set除去数组中重复元素,对于每一个元素,找到比它小且相邻的最小开始元素,紧接着找最大且存在连续序列的元素。排序算法的时间复杂度为O(NlogN),超出要求时间复杂度,所以不能使用排序算法。先将原数组排序,再除去其中相同元素,然后遍历一遍数组,记录连续序列的长度。它基于红黑树实现,支持高效的查找、插入和删除操作。函数的用法非常简单,它接受一个参数(即要查找的元素),并返回一个。,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。成员函数,用于检查集合中是否包含某个元素。

2025-03-09 15:58:43 216

原创 LeetCode热题100-3题【滑动窗口】

定义两个指针作为滑动窗口的左端和右端,初始位置均指向字符串首位元素,遍历数组移动右指针,将当前元素以及其在数组中的位置记录到map中,若遍历到一个元素在map中已存在,即说明该子字符串出现重复元素,移动左端指针到第一个不是重复元素的位置,再将该元素更新map中的当前位置。该解题思路为将子字符串储存在map中,若出现重复字符,则从map中移除重复字符及其前面的字符。,当数据出现时,它返回数据所在位置的迭代器,如果map中没有要查找的数据,它返回的迭代器等于end函数返回的迭代器。

2025-03-09 10:21:32 333

原创 LeetCode热题100-11题

首先定义两个指针分别指向数组最左端和最右端,此时矩形的底边为right-left,高为两数组元素较小者,记录此时的面积(即底*高),移动指针(移动数组元素较小的下标指针),计算面积,维护最大值,直到right<=left结束。轴共同构成的容器可以容纳最多的水。左边指针往右移,右边指针往左移。找出其中的两条线,使得它们与。返回容器可以储存的最大水量。

2025-03-06 10:43:21 250

原创 LeetCode动态规划(基础版)-740题

并且由此可知,若一个数已取,则与之相等的数都可以取,因为它周围相差1的数都已删去。所以每个数都有两种取法:与之相差为1的数已取,则该数不能取,反之没有相差为1的数已取,则可以取。先将数组从小到大排序,统计有多少个不同的数以及每个数出现的次数,分别用数组和map实现,(其实可以直接利用map键值表示数和次数,需利用迭代器的first、second分别表示键值,较复杂)从左往右遍历数组,取两种情况的较大者为当前数组最大取值。之后,删除 2 获得 2 个点数。删除 4 获得 4 个点数,因此 3 也被删除。

2025-03-06 10:30:34 162

原创 LeetCode热题100-49题

字母异位词指含有相同字母组合的不同单词,所以可以按照字母组合将单词分类,找到每个单词的字母组合可以用sort将字母重新排列,这样字母异位词就找到相同属性。首先定义一个map类型变量,将排列好的字母组合作为键,再将各个单词作为值配对,因此map键类型为string,值类型为vector<string>。返回一个指向map头部的逆向迭代器。返回一个指向map尾部的逆向迭代器。是由重新排列源单词的所有字母得到的一个新单词。返回指向map末尾的迭代器。返回map中元素的个数。返回指向map头部的。

2025-03-04 23:45:27 400

原创 LeetCode经典面试150题-45题

例如从第一个点开始,当前最大跳跃里程数为nums[0],设其为maxpath,在0~maxpath区间内寻找一个跳跃距离最大的点,及它是该区间内所有点中可到达距离最远的点,设该点下标为maxbo,设其nums值为maxsize,下一个考虑的区间即为maxbo~maxbo+maxsize,当前可到达的最大里程数maxpath更新为maxbo+maxsize。如果访问最后一个元素,在边界正好为最后一个位置的情况下,我们会增加一次「不必要的跳跃次数」,因此我们不必访问最后一个元素。处,你可以跳转到任意。

2025-03-02 23:27:31 383

原创 LeetCode动态规划(基础版)-198题

当前盗窃总额有两种情况:前一家已盗窃时,当前这家不能盗窃,所以当前金额与前一家盗窃金额一致;前一家未被盗窃时,当前这家可以盗窃,所以当前金额为前两家金额加上当前这家金额。你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,若只有一家可盗窃(n=1)时需要单独考虑以防数组溢出,即nums[1]不存在。盗窃第n家时都有两种情况:第n-1家已盗窃,第n-1家未盗窃。给定一个代表每个房屋存放金额的非负整数数组,计算你。

2025-03-01 13:03:35 209

原创 LeetCode动态规划(基础版)-746题

到达每层楼梯都有两种花费情况:从低一层上来加上低一层的花费;从低两层上来加上低两层的花费。取两者较小者即为最少花费。考虑第0层和第1层花费均为0。个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。请你计算并返回达到楼梯顶部的最低花费。

2025-02-28 17:44:48 164

原创 LeetCode动态规划(基础版)-70题

跳到第n个台阶有两种情况:从第n-1个台阶跳一个台阶上来;从第n-2个台阶跳两个台阶上来。所以f(n)=f(n-1)+f(n-2),n>2。考虑f(1)=1,f(2)=2。初始化nums数组大小为n+2。当初始化为n+1时,系统报执行错误,溢出(overflow)。具体原因有待思考...你有多少种不同的方法可以爬到楼顶呢?

2025-02-28 13:51:35 95

原创 LeetCode经典面试150题-55题

从最后一位往前考虑,统计可以到达最后一位的所有点 ,若这些点中有数组第一位的,则可以到达最后一位,若没有,则统计的所有点递归调用该函数。从第一个开始,记录当前能走到的最大距离,若最长距离超过或者刚好到达最后一点,即能到达最后一点。无论怎样,总会到达下标为 3 的位置。可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。3.统计所有可到达最后一位的所有点,考虑所有可能性;4.若统计的元素个数为0,则肯定无法到达最后一点;判断你是否能够到达最后一个下标,如果可以,返回。

2025-02-27 15:12:27 239

原创 LeetCode经典面试150题-122题

每天可以有两种状态:手里没股票和手里有股票。手里没股票分为两种情况:前一天手里也没股票、前一天手里有股票并且今天把股票卖了。手里有股票也分为两种情况:前一天手里有股票、前一天手里没股票并且今天买了股票。最后一天手里一定没股票收入最大。将每天的利润最大化,股票交易看作无限次数,所有大于0的日间差额都是利润,利润之和就是最大利润。在每一天,你可以决定是否购买和/或出售股票。原始思路:递归求出当天利润加上剩下天数最大利润【运行错误】你也可以先购买,然后在。

2025-02-24 14:30:31 149

原创 LeetCode经典面试150题-121题

遍历一遍数组的同时,计算当前元素与已维护的最小元素的差值 ,与已维护的最大利润作比较并维护此时的最大利润。对于每个元素,找到该元素后面数组中的最大元素计算出该元素的最大利润,并与当前最大利润值作比较并维护。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回。设计一个算法来计算你所能获取的最大利润。买入这只股票,并选择在。

2025-02-23 18:29:58 162

原创 LeetCode经典面试150题-189题

移位步数k大于数组长度,此时直接按照数组下标会导致数组溢出,所以需要将k简化到数组大小以内。将原数组复制到备用数组中,再根据移位步数重新放置元素。,将数组中的元素向右轮转。

2025-02-22 17:34:50 124

原创 LeetCode经典面试150题-169题

你可以假设数组是非空的,并且给定的数组总是存在多数元素。,返回其中的多数元素。多数元素是指在数组中出现次数。

2025-02-22 14:57:17 192

原创 LeetCode经典面试150题-80题

algorithm)是一种使用小的,固定数量的额外之空间来转换资料的算法。当算法执行时,输入的资料通常会被要输出的部分覆盖掉。这种方法官方叫做双指针解法,利用数组的有序性,比较当前元素和前两位的元素的值,如若相等,则跳过,若大于,则保留。遍历一遍有序数组,记录相同数值的元素个数,若个数>=2,则跳过,反之则保留。回看前几次做题也遇到了要求原地,不过当时没注意,因此这也是一个出错点。删除重复出现的元素,使得出现次数超过两次的元素。不要使用额外的数组空间,你必须在。,返回删除后数组的新长度。

2025-02-21 14:41:09 108

原创 LeetCode经典面试150题-26题

原数组非严格递增,首先将原数组首元素放入备用数组中,遍历一遍原数组,比较当前原数组元素与备用数组最后一位元素,不同则将该元素放入备用数组中,继续比较,至原数组遍历结束,返回备用数组大小。,返回删除后数组的新长度。删除重复出现的元素,使每个元素。

2025-02-20 22:34:27 150

原创 LeetCode经典面试150题-27题

遍历一遍原数组,将与val值不同的元素取出,放入备用数组中,最后将备用数组的元素复制到原数组中,返回备用数组的大小作为函数返回值。删除一个区间内的所有元素,erase(first,last)即删除[first,last)内的所有元素。删除单个元素,erase(it)即删除迭代器为it处的元素。返回vector数组的大小函数为size(),非length()!用来向vector的任意迭代器it处插入一个元素x。元素的顺序可能发生改变。用来获得vector中元素的个数。用来清空vector中的所有元素。

2025-02-20 12:07:09 400

原创 LeetCode经典面试150题-88题

将两个数组同时从前向后遍历元素并比较,选取较小的元素放进备用数组中,直到数组元素全部比较结束。通过使用vector的resize函数确定nums数组大小。最终,合并后数组不应由函数返回,而是存储在数组。你可以设计实现一个时间复杂度为。个元素表示应合并的元素,后。中,使合并后的数组同样按。的算法解决此问题吗?区间内元素升序排列。

2025-02-19 18:53:50 249

原创 C++栈—括号匹配

假设一个表达式或一段程序中含有三种括号:圆括号“(”和“)”、方括号“[”和“]”、花括号“{”和“}”。试写一个程序判别给定的表达式或程序中所含括号是否正确配对出现。2.遇到 ')'、'}'、']' 时判断栈顶元素是否为前括号时,可能会出现栈顶元素不存在的情况,需先判定栈顶元素存在。否则例如“ }}} ” 则无法输出结果。3.循环结束后需判断栈是否为空,若栈不为空,则还剩余前括号,匹配结果为wrong。输出一个right或wrong,表明正确匹配与否。每行为一个含有括号的表达式或一段程序。

2023-11-26 22:02:42 801 1

原创 c++入门第一节

C++自学第一天

2023-11-26 11:28:29 80 1

空空如也

空空如也

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

TA关注的人

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