自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

随着 end 不断遍历向后,会遇到与 [start, end] 区间内字符相同的情况,此时将字符作为 key 值,获取其 value 值,并更新 start,此时 [start, end] 区间内不存在重复字符。定义一个 map 数据结构存储 (k, v),其中 key 值为字符,value 值为字符位置 +1,加 1 表示从字符位置后一个才开始不重复。我们定义不重复子串的开始位置为 start,结束位置为 end。因为无重复字符的最长子串是。因为无重复字符的最长子串是。因为无重复字符的最长子串是。

2024-12-16 22:27:45 191

原创 leetcode面试经典150题之 209. 长度最小的子数组

如果不存在符合条件的子数组,返回。是该条件下的长度最小的子数组。找出该数组中满足其总和大于等于。个正整数的数组和一个正整数。

2024-12-16 22:24:49 200

原创 leetcode面试经典150题之 15. 三数之和

不同的三元组是 [-1,0,1] 和 [-1,-1,2]。注意,输出的顺序和三元组的顺序并不重要。答案中不可以包含重复的三元组。唯一可能的三元组和不为 0。唯一可能的三元组和为 0。,判断是否存在三元组。

2024-12-15 21:32:16 145

原创 leetcode面试经典150题之 11. 盛最多水的容器

图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。轴共同构成的容器可以容纳最多的水。找出其中的两条线,使得它们与。返回容器可以储存的最大水量。

2024-12-15 21:21:51 215

原创 leetcode面试经典150题之 167. 两数之和 II - 输入有序数组

双指针依次遍历数组,将数组头尾相加与target进行判断,若小于target则将初始指针往后移继续判断,若大于target则将尾指针向前移。-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。,请你从数组中找出满足相加之和等于目标数。

2024-12-15 16:56:12 139

原创 leetcode面试经典150题之 392. 判断子序列

如果有大量输入的 S,称作 S1, S2, ... , Sk 其中 k >= 10亿,你需要依次检查它们是否为 T 的子序列。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。若遍历完字符串 t 后,字符串 s 仍未遍历完,代表 s 不是 t 的子序列,此时返回 false。进而,若 i 已走过 s 尾部,代表 s 是 t 的子序列,此时应提前返回 true;当 s[i] == t[j] 时,代表匹配成功,此时同时 i++ , j++;

2024-12-15 16:41:11 311

原创 leetcode面试经典150题之 125. 验证回文串

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

2024-12-15 16:38:43 166

原创 leetcode面试经典150题之 68. 文本左右对齐

要求尽可能均匀分配单词间的空格数量。如果某一行单词间的空格不能均匀分配,则左侧放置的空格数要多于右侧的空格数。注意最后一行的格式应为 "shall be " 而不是 "shall be",因此在编写程序的过程中,可以把填充空格作为一个函数单拎出来,保证程序的简洁性。因为最后一行应为左对齐,而不是左右两端对齐。第二行同样为左对齐,这是因为这行只包含一个单词。2 最后一行或者只有一个单词的情况需要单独考虑。文本的最后一行应为左对齐,且单词之间不插入。个字符,且左右两端对齐的文本。

2024-12-14 16:28:07 444

原创 leetcode面试经典150题之 28. 找出字符串中第一个匹配项的下标

"leeto" 没有在 "leetcode" 中出现,所以返回 -1。字符串的第一个匹配项的下标(下标从 0 开始)。匹配失败:枚举原串的下一个「发起点」,重新尝试匹配。第一个匹配项的下标是 0 ,所以返回 0。"sad" 在下标 0 和 6 处匹配。匹配成功:返回本次匹配的原串「发起点」。

2024-12-14 16:08:40 189

原创 leetcode面试经典150题之 6. Z 字形变换

以从上往下、从左到右进行 Z 字形排列。

2024-12-14 13:12:58 156

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

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

2024-12-14 13:02:18 170

原创 leetcode面试经典150题之 14. 最长公共前缀

遍历后面的字符串,依次将其与 ans 进行比较,两两找出公共前缀,最终结果即为最长公共前缀;如果查找过程中出现了 ans 为空的情况,则公共前缀不存在直接返回;令最长公共前缀 ans 的值为第一个字符串,进行初始化;当字符串数组长度为 0 时则公共前缀为空,直接返回;编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串。输入不存在公共前缀。

2024-12-14 12:57:10 123

原创 leetcode面试经典150题之 58. 最后一个单词的长度

先从后过滤掉空格找到单词尾部,再从尾部向前遍历,找到单词头部,最后两者相减,即为单词的长度。,由若干单词组成,单词前后用一些空格字符隔开。最后一个单词是长度为 6 的“joyboy”。是指仅由字母组成、不包含任何空格字符的最大。最后一个单词是“World”,长度为 5。最后一个单词是“moon”,长度为 4。

2024-12-09 23:04:46 177

原创 leetcode面试经典150题之 12. 整数转罗马数字

罗马数字是通过添加从最高到最低的小数位值的转换而形成的。3000 = MMM 由于 1000 (M) + 1000 (M) + 1000 (M)700 = DCC 由于 500 (D) + 100 (C) + 100 (C)注意:49 不是 50 (L) 减 1 (I) 因为转换是基于小数位。40 = XL 由于 50 (L) 减 10 (X)9 = IX 由于 10 (X) 减 1 (I)给定一个整数,将其转换为罗马数字。

2024-12-09 23:01:39 241

原创 leetcode面试经典150题之 13. 罗马数字转整数

数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。同样地,数字 9 表示为。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做。遍历字符串的每一位与下一位进行对比,如果是小于下一位的,那么总和减去当前的值。给定一个罗马数字,将其转换成整数。,即为两个并列的 1。

2024-12-09 22:56:27 365

原创 leetcode面试经典150题之 42. 接雨水

上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。个非负整数表示每个宽度为。

2024-12-09 22:49:10 172

原创 leetcode面试经典150题之 135. 分发糖果

看到数组,涉及到左右两边值相关,本能想到前缀和,由前缀和想到两次遍历。你可以分别给第一个、第二个、第三个孩子分发 2、1、2 颗糖果。你可以分别给第一个、第二个、第三个孩子分发 1、2、1 颗糖果。第三个孩子只得到 1 颗糖果,这满足题面中的两个条件。请你给每个孩子分发糖果,计算并返回需要准备的。表示每个孩子的评分。

2024-12-08 22:57:53 227

原创 leetcode面试经典150题之 134. 加油站

然后遍历加油站数组,计算从当前站到下一站后的剩余油量(当前站油量减去到下一站的油耗),并更新总油量和当前油量。- 如果在某一站剩余油量小于0,说明从当前起始站出发无法完成行程,将起始站索引更新为下一站,同时重置当前油量为0。我们从 2 号加油站出发,可以获得 4 升汽油。你无法返回 2 号加油站,因为返程需要消耗 4 升汽油,但是你的油箱只有 3 升汽油。开往 3 号加油站,你需要消耗 5 升汽油,正好足够你返回到 3 号加油站。开往 1 号加油站,此时油箱有 3 - 3 + 3 = 3 升汽油。

2024-12-08 22:33:44 421

原创 项目实战之 什么是JWT?

第三部分使用签名算法对第一部分和第二部分的内容进行签名,常用的签名算法是 HS256,常见的还有md5,sha 等,签名算法需要使用密钥进行签名,密钥不对外公开,并且签名是不可逆的,如果第三方更改了内容那么服务器验证签名就会失败,要想保证验证签名正确必须保证内容、密钥与签名前一致。这个过程就是无状态认证。第二部分是负载,内容也是一个json对象,它是存放有效信息的地方,它可以存放jwt提供的信息字段,比如:iss(签发者),exp(过期时间戳), sub(面向的用户)等,也可自定义字段。

2024-12-08 12:30:11 503

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

之中任意元素的全部前缀元素和后缀的乘积都在。这题使用前缀积、后缀积可以直接秒了。之外其余各元素的乘积。时间复杂度内完成此题。系列:前缀积、后缀积。

2024-12-07 22:30:02 223

原创 leetcode面试经典150题之 380. O(1) 时间插入、删除和获取随机元素

/ 由于 2 是集合中唯一的数字,getRandom 总是返回 2。// 向集合中插入 2。// 从集合中移除 1 ,返回 true。// 向集合中插入 1。// getRandom 应随机返回 1 或 2。// 返回 false ,表示集合中不存在 2。// 2 已在集合中,所以返回 false。

2024-12-07 22:23:13 306

原创 leetcode面试经典150题之 274. H 指数

设h=citations.length - i,即至多有h篇论文分别引用了至少citations[i]次,其余citations.length-h篇论文引用数不多于citations[i]次,因此,只需citations[i] >= h 就满足题意。篇论文被引用的次数。计算并返回该研究者的 h。代表“高引用次数” ,一名科研人员的。篇论文,每篇论文相应的被引用了。次,其余两篇论文每篇被引用。将数组排序后实现对其的二分查找。篇论文被引用次数大于等于。给定数组表示研究者总共有。是指他(她)至少发表了。

2024-12-07 18:51:44 182

原创 leetcode面试经典150题之 55. 跳跃游戏

记录能到达的最远距离,如果当前下标大于能到达的最远距离则表示不能到达当前下标,返回false,否则返回true。无论怎样,总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 , 所以永远不可能到达最后一个下标。可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回。给你一个非负整数数组。

2024-12-07 18:34:19 215

原创 leetcode面试经典150题之 122. 买卖股票的最佳时机 II

随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6 - 3 = 3。在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4。在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4。在这种情况下, 交易无法获得正利润,所以不参与交易可以获得最大利润,最大利润为 0。

2024-12-07 18:24:20 212

原创 leetcode面试经典150题之 121. 买卖股票的最佳时机

利用temp存储最大收益的值,通过for循环计算每天获得的利益,如果出现收益大于temp时,将profit的值赋给temp并继续往复循环计算。在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。返回你可以从这笔交易中获取的最大利润。设计一个算法来计算你所能获取的最大利润。在这种情况下, 没有交易完成, 所以最大利润为 0。买入这只股票,并选择在。

2024-12-07 18:21:17 246

原创 leetcode面试经典150题之 189. 轮转数组

新建一个数组用于存储移动后的值,然后利用自带的函数将arr[]的值拷贝到nums[]中。向右轮转 1 步: [99,-1,-100,3]向右轮转 2 步: [3,99,-1,-100],将数组中的元素向右轮转。

2024-12-07 17:58:37 138

原创 leetcode面试经典150题之 169. 多数元素

当cnt为0时,更换max的值为当前nums[i]并继续循环计算次数,直到结束循环,剩余的最后一个max的值即为出现最多的值。你可以假设数组是非空的,并且给定的数组总是存在多数元素。,返回其中的多数元素。多数元素是指在数组中出现次数。若出现了max,即将计数cnt++,否则将cnt--将max初始化赋值为数值的第一个值。

2024-12-07 16:54:46 226

原创 leetcode面试经典150题之 80. 删除有序数组中的重复项 II

初始指针只需判断后两个下标的值是否与当前的值相同,若不同即可移动初始指针,若相同即继续循环往复找到不同的值将其赋给当前初始指针的位置,而多余的数值即会排序在nums[cnt]之后。方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。是以“引用”方式传递的。删除重复出现的元素,使得出现次数超过两次的元素。// 根据你的函数返回的长度, 它会打印出数组中。// 在函数里修改输入数组对于调用者是可见的。不需要考虑数组中超出新长度后面的元素。不需要考虑数组中超出新长度后面的元素。,返回删除后数组的新长度。

2024-12-07 16:44:18 270

原创 leetcode面试经典150题之 26. 删除有序数组中的重复项

我们就利用指针,判断当前位置的数值与下一位数值是否相等,如果不等的话,可以将初始指针后移一位,如果相等,即继续执行判断,将第二个指针位置后移一位继续判断是否相等,直到出现不等的数值,将其赋值给初始指针的位置,以确保不会出现连续重复的数值。已知原数组nums是按照非严格递增的排序,即nums[i]

2024-12-07 16:35:26 292

原创 leetcode面试经典150题之 27. 移除元素

/ 它以不等于 val 的值排序。你的函数应该返回 k = 5,并且 nums 中的前五个元素为 0,0,1,3,4。// 长度正确的预期答案。// 排序 nums 的前 k 个元素。你在返回的 k 个元素之外留下了什么并不重要(因此它们并不计入评测)。你在返回的 k 个元素之外留下了什么并不重要(因此它们并不计入评测)。你的函数函数应该返回 k = 2, 并且 nums。元素的顺序可能发生改变。如果所有的断言都通过,你的解决方案将会。中的前两个元素均为 2。

2024-12-07 16:28:24 283

原创 leetcode 面试经典150题之 88. 合并两个有序数组

注意,因为 m = 0 ,所以 nums1 中没有元素。nums1 中仅存的 0 仅仅是为了确保合并结果可以顺利存放到 nums1 中。将nums2中的数组的值加入nums1中空余的位置,再用自带的sort排序使其符合递增排序并输出。,5,6] ,其中斜体加粗标注的为 nums1 中的元素。最终,合并后数组不应由函数返回,而是存储在数组。需要合并 [1,2,3] 和 [2,5,6]。需要合并的数组是 [] 和 [1]。个元素表示应合并的元素,后。需要合并 [1] 和 []。中,使合并后的数组同样按。

2024-12-07 16:25:02 263

原创 leetcode面试经典一百题之 45.跳跃游戏II

面试刷题dp初级

2024-12-07 16:21:28 158

大一上学期C语言大作业.7z

大一上学期C语言大作业.7z

2022-12-08

图书销售管理系统.exe

图书销售管理系统.exe

2022-12-07

空空如也

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

TA关注的人

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