阿凯的leetcode之旅
爱编程的阿凯ԅ(¯ㅂ¯ԅ)
这个作者很懒,什么都没留下…
展开
-
LeetCode3. 无重复字符的最长子串
给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: s = “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: s = “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: s = “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列原创 2021-07-12 17:16:14 · 73 阅读 · 0 评论 -
LeetCode 19. 删除链表的倒数第 N 个结点
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。进阶:你能尝试使用一趟扫描实现吗?示例 1:输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]示例 2:输入:head = [1], n = 1输出:[]示例 3:输入:head = [1,2], n = 1输出:[1]这是上一道双指针(间隔)的延续和提高(上一道题的题解),去除倒数第n个数,坑点在于去除最后一个数,因为在第一次取间隔步数n的时候,fast的next为空了,不能再搞一个nex原创 2021-07-11 09:39:20 · 87 阅读 · 0 评论 -
LeetCode 876. 链表的中间结点
给定一个头结点为 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, 以及 ans.next.next.next = NU原创 2021-07-11 08:46:38 · 122 阅读 · 0 评论 -
LeetCode 283. 移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]经典的双指针问题,我们用一个指针指出第一个0的位置和第一个非0的位置,我们交换了他们的位置就是相当于没改变顺序的情况下改变数组。所以此时两个指针我们都从头开始遍历,每一次不管元素是否为0我们都要往下找(right++),left在遇到0之前也是一直加,当遇到第一个0的时候,left指针就停止了,而right要继续往下找非0元素,找到后进原创 2021-07-09 08:50:35 · 61 阅读 · 0 评论 -
LeetCode189. 旋转数组
给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。进阶:尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。你可以使用空间复杂度为 O(1) 的 原地 算法解决这个问题吗?示例 1:输入: nums = [1,2,3,4,5,6,7], k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]Solutio原创 2021-07-08 10:54:40 · 158 阅读 · 0 评论 -
LeetCode P1380. 矩阵中的幸运数
给你一个 m * n 的矩阵,矩阵中的数字 各不相同 。请你按 任意 顺序返回矩阵中的所有幸运数。幸运数是指矩阵中满足同时下列两个条件的元素:在同一行的所有元素中最小在同一列的所有元素中最大示例 1:输入:matrix = [[3,7,8],[9,11,13],[15,16,17]]输出:[15]解释:15 是唯一的幸运数,因为它是其所在行中的最小值,也是所在列中的最大值。class Solution {public: vector<int> luckyNumbers原创 2021-06-07 10:16:15 · 111 阅读 · 0 评论 -
LeetCode P1299. 将每个元素替换为右侧最大元素
给你一个数组 arr ,请你将每个元素用它右边最大的元素替换,如果是最后一个元素,用 -1 替换。完成所有替换操作后,请你返回这个数组。示例 1:输入:arr = [17,18,5,4,6,1]输出:[18,6,6,6,1,-1]解释:下标 0 的元素 --> 右侧最大元素是下标 1 的元素 (18)下标 1 的元素 --> 右侧最大元素是下标 4 的元素 (6)下标 2 的元素 --> 右侧最大元素是下标 4 的元素 (6)下标 3 的元素 --> 右侧最大元素原创 2021-06-05 09:03:26 · 61 阅读 · 0 评论 -
LeetCode 剑指 Offer 58 - II. 左旋转字符串
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。示例 1:输入: s = “abcdefg”, k = 2输出: “cdefgab”示例 2:输入: s = “lrloseumgh”, k = 6输出: “umghlrlose”class Solution {public: string reverseLeftWords(strin原创 2021-06-02 10:42:09 · 50 阅读 · 0 评论 -
LeetCode P1588. 所有奇数长度子数组的和
给你一个正整数数组 arr ,请你计算所有可能的奇数长度子数组的和。子数组 定义为原数组中的一个连续子序列。请你返回 arr 中 所有奇数长度子数组的和 。示例 1:输入:arr = [1,4,2,5,3]输出:58解释:所有奇数长度子数组和它们的和为:[1] = 1[4] = 4[2] = 2[5] = 5[3] = 3[1,4,2] = 7[4,2,5] = 11[2,5,3] = 10[1,4,2,5,3] = 15我们将所有值求和得到 1 + 4 + 2 + 5 +原创 2021-06-02 10:10:27 · 90 阅读 · 0 评论 -
LeetCode P1464.数组中两元素的最大乘积
给你一个整数数组 nums,请你选择数组的两个不同下标 i 和 j,使 (nums[i]-1)(nums[j]-1) 取得最大值。请你计算并返回该式的最大值。示例 1:输入:nums = [3,4,5,2]输出:12解释:如果选择下标 i=1 和 j=2(下标从 0 开始),则可以获得最大值,(nums[1]-1)(nums[2]-1) = (4-1)(5-1) = 34 = 12 。class Solution {public: int maxProduct(vector<in原创 2021-05-31 10:07:04 · 124 阅读 · 0 评论 -
Leetcode P1869.哪种连续子字符串更长
Leetcode P1869.哪种连续子字符串更长给你一个二进制字符串 s 。如果字符串中由 1 组成的 最长 连续子字符串 严格长于 由 0 组成的 最长 连续子字符串,返回 true ;否则,返回 false 。例如,s = "110100010" 中,由 1 组成的最长连续子字符串的长度是 2 ,由 0 组成的最长连续子字符串的长度是 3 。注意,如果字符串中不存在 0 ,此时认为由 0 组成的最长连续子字符串的长度是 0 。字符串中不存在 1 的情况也适用此规则。class Solutio原创 2021-05-29 10:39:40 · 130 阅读 · 0 评论 -
LeetCode p1295.统计位数为偶数的数字
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar原创 2021-05-28 10:22:10 · 95 阅读 · 0 评论