Leetcode
谢黄拌面
编程小白
展开
-
Leetcode11. 盛最多水的容器
初始时,左指针指向数组的第一个位置,右指针指向数组的最后一个位置。然后计算当前的容器面积,并更新最大面积。接着根据两边边界的高度来移动指针,如果左边的高度小于右边的高度,则移动左指针,否则移动右指针。重复这个过程直到左指针大于等于右指针,最终返回最大面积。计算面积的高度用的是最小的那个高度,如果小的那侧不移动,移动高的那侧,底逐渐减小,高度却不会更高了,总面积只会减小,所以只能移动小的那侧才有机会让面积更大。轴共同构成的容器可以容纳最多的水。找出其中的两条线,使得它们与。返回容器可以储存的最大水量。原创 2024-01-03 11:04:21 · 633 阅读 · 1 评论 -
Leetcode167. 两数之和 II - 输入有序数组
初始时两个指针分别指向第一个元素位置和最后一个元素的位置。每次计算两个指针指向的两个元素之和,并和目标值比较。如果两个元素之和等于目标值,则发现了唯一解。如果两个元素之和小于目标值,则将左侧指针右移一位。如果两个元素之和大于目标值,则将右侧指针左移一位。移动指针之后,重复上述操作,直到找到答案。你所设计的解决方案必须只使用常量级的额外空间。,请你从数组中找出满足相加之和等于目标数。如果设这两个数分别是。的形式返回这两个整数的下标。以长度为 2 的整数数组。重复使用相同的元素。原创 2024-01-03 10:32:20 · 385 阅读 · 1 评论 -
Leetcode6. N 字形变换
以从上往下、从左到右进行 Z 字形排列。原创 2023-12-31 15:59:40 · 866 阅读 · 0 评论 -
Leetcode12. 整数转罗马数字
数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。同样地,数字 9 表示为。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做。中的整数值,按照从大到小的顺序。在每次循环中,如果当前整数值大于等于。,其中存储了整数和罗马数字的对应关系,按照从大到小的顺序排列。,即为两个并列的 1。,即为输入整数对应的罗马数字表示。给你一个整数,将其转为罗马数字。,用来存储最终的罗马数字表示。例如, 罗马数字 2 写做。,则将对应的罗马数字加入到。原创 2023-12-31 15:04:47 · 486 阅读 · 0 评论 -
Leetcode151. 反转字符串中的单词
中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。1.使用strip()函数去除字符串两端的空格,然后使用双指针i和j来遍历字符串。2.在遍历过程中,找到一个单词的末尾和开头位置,然后将这个单词添加到结果列表中。3.将结果列表中的单词用空格连接起来。中使用至少一个空格将字符串中的。之间用单个空格连接的结果字符串。是由非空格字符组成的字符串。原创 2023-12-30 16:09:03 · 529 阅读 · 1 评论 -
Leetcode135. 分发糖果
3.再从右到左遍历一次评分列表,确保如果一个孩子的评分比后一个孩子高,且他当前的糖果数量不满足条件,那么他的糖果数量应该比后一个孩子多一个。2.从左到右遍历一次评分列表,确保如果一个孩子的评分比前一个孩子高,那么他的糖果数量也应该比前一个孩子多一个。请你给每个孩子分发糖果,计算并返回需要准备的。1.给每个孩子分配一个糖果。这道题通过贪心算法来解决。表示每个孩子的评分。原创 2023-12-29 20:10:43 · 319 阅读 · 1 评论 -
Leetcode134. 加油站
i从0开始累加rest[i],和记为total,一旦total小于零,说明[0, i]区间都不能作为起始位置,因为这个区间选择任何一个位置作为起点,到i这里都会断油,那么起始位置从i+1算起,再从0计算total。sum(gas)>=sum(cost)sum(gas) >= sum(cost)sum(gas)>=sum(cost),题目一定有解,且保证有唯一解。,如果你可以按顺序绕环路行驶一周,则返回出发时加油站的编号,否则返回。每个加油站的剩余量rest[i]为gas[i] - cost[i]。原创 2023-12-29 14:29:58 · 432 阅读 · 1 评论 -
Leetcode392. 判断子序列
4.循环结束后,通过判断 p 和 m 的关系来确定是否找到了 s 的所有字符。如果 p<m 且 q==n,则说明在 t 中没有找到 s 的所有字符,返回 False;否则返回 True。3.如果 s[p] 不等于 t[q],则只将 q 指针向后移动一位;如果相等,则同时将 p 和 q 指针向后移动一位。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。1.获取字符串 s 和 t 的长度,并初始化两个指针 p 和 q 为 0。原创 2023-12-28 20:04:21 · 371 阅读 · 1 评论 -
Leetcode125. 验证回文串
4.使用前后指针,如果字符相同,就向前向后移动一位,如果不同,返回False。直到两个指针重合,说明正反相同位置的字符是一样的,也就是回文串,返回True。如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个。1.首先将所有字符转成小写,用了python中的内置函数lower。3.特殊情况,空字符串直接返回True。字母和数字都属于字母数字字符。2.将字符提取出来。原创 2023-12-28 19:37:05 · 410 阅读 · 1 评论 -
Leetcode28. 找出字符串中第一个匹配项的下标
如果相等,两个指针都向前移动;如果不相等,需要回溯到上一个匹配的位置的下一个字符,并将。函数用于构建部分匹配表(PMT)。PMT 用于优化模式串的匹配过程,避免不必要的字符比较。函数使用 KMP 算法在文本串中查找模式串的第一个匹配项。字符串的第一个匹配项的下标(下标从 0 开始)。如果相等,说明完全匹配,返回起始位置。否则,返回 -1 表示未找到匹配的子串。移动到上一个匹配位置的下一个字符。原创 2023-12-26 16:13:35 · 44 阅读 · 0 评论 -
Leetcode14. 最长公共前缀
首先检查输入列表是否为空,如果为空则直接返回空字符串。然后,它找到字符串数组中最短字符串的长度,并遍历每个字符的位置,检查相同位置上的字符是否相同。如果找到不相同的字符,就返回当前位置之前的部分作为最长公共前缀。如果循环完毕,整个最短字符串就是最长公共前缀。编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串。原创 2023-12-26 15:47:50 · 37 阅读 · 0 评论 -
Leetcode58. 最后一个单词的长度
单词的长度。原创 2023-12-26 15:01:21 · 79 阅读 · 0 评论 -
Leetcode13. 罗马数字转整数
思路:定义一个字典,把七种罗马数字和对应的数字存进去,根据题目描述,除了那六种特殊情况,小数总会在大数右边。先定义一个pre_value,初始值为0,用来比较前一位字符对应数字与当前字符对应数字的大小。从后向前遍历字符串,将遍历到的字符与字典对应,对应的数字为current_value。一般情况下,前面的数字都是大于或等于后面的数字,直接无脑累加。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。通常情况下,罗马数字中小的数字在大的数字的右边。,即为两个并列的 1。原创 2023-12-26 14:41:14 · 45 阅读 · 0 评论