
leetcode面试经典150题
LittleFishC
编程爱好者...
展开
-
【LeetCode】和为K的子数组
给你一个整数数组nums和一个整数k ,请你统计并返回该数组中和为k的子数组的个数。输入:nums = [1,1,1], k = 2。输入:nums = [1,2,3], k = 3。子数组是数组中元素的连续非空序列。原创 2024-08-20 00:41:40 · 306 阅读 · 0 评论 -
【LeeCode】找到字符串中所有字母异位词
滑动窗口的基本思路是维护一个长度为p的窗口,在字符串s中滑动这个窗口,并检查窗口中的子串是否为字符串p的异位词。起始索引等于 0 的子串是 “cba”, 它是 “abc” 的异位词。起始索引等于 6 的子串是 “bac”, 它是 “abc” 的异位词。起始索引等于 0 的子串是 “ab”, 它是 “ab” 的异位词。起始索引等于 1 的子串是 “ba”, 它是 “ab” 的异位词。起始索引等于 2 的子串是 “ab”, 它是 “ab” 的异位词。输入: s = “abab”, p = “ab”原创 2024-08-19 23:51:08 · 391 阅读 · 0 评论 -
【LeetCode】无重复字符的最长子串
请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。给定一个字符串 s ,请你找出其中不含有重复字符的最长子串的长度。解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。输入: s = “abcabcbb”输入: s = “pwwkew”输入: s = “bbbbb”原创 2024-08-17 21:41:40 · 302 阅读 · 0 评论 -
【LeetCode】接雨水
解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输入:height = [4,2,0,3,2,5]原创 2024-08-17 21:00:59 · 250 阅读 · 0 评论 -
【LeetCode】三数之和
给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i!= k ,同时还满足 nums[i] + nums[j] + nums[k] == 0。不同的三元组是 [-1,0,1] 和 [-1,-1,2]。输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]输入:nums = [0,1,1]输入:nums = [0,0,0]解释:唯一可能的三元组和为 0。输出:[[0,0,0]]原创 2024-08-16 10:46:32 · 409 阅读 · 0 评论 -
【LeetCode】盛最多水的容器
有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i])。解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。使用双指针,然后每次选择较短的那条边所对应的指针进行移动,因为移动较短的边有可能增加容器的高度,从而可能找到更大的容积(找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。输入:[1,8,6,2,5,4,8,3,7]输入:height = [1,1]原创 2024-08-15 23:51:49 · 209 阅读 · 0 评论 -
【LeetCode】最长连续序列
如果当前数字 num 是一个序列的开始(即 num - 1 不在哈希表中),那么从 num 开始逐个检查后续数字 num + 1, num + 2, …是否在哈希表中存在,直到不再连续。给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。解释:最长数字连续序列是 [1, 2, 3, 4]。输入:nums = [0,3,7,2,5,8,4,6,0,1]请你设计并实现时间复杂度为 O(n) 的算法解决此问题。输入:nums = [100,4,200,1,3,2]原创 2024-08-14 23:27:08 · 297 阅读 · 0 评论 -
【LeetCode】字母异位词分组
使用unordered_map(哈希表)将排序后的字符串映射到一个字符串列表中。哈希表的键是排序后的字符串,值是所有与该键对应的原始字符串组成的列表。输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]给你一个字符串数组,请你将字母异位词组合在一起。字母异位词是由重新排列源单词的所有字母得到的一个新单词。输出: [[“a”]]输出: [[“”]]原创 2024-08-14 22:49:08 · 354 阅读 · 0 评论 -
【LeetCode】两数之和
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。输入:nums = [2,7,11,15], target = 9。输入:nums = [3,2,4], target = 6。输入:nums = [3,3], target = 6。你可以按任意顺序返回答案。原创 2024-08-14 18:55:35 · 340 阅读 · 0 评论 -
【LeetCode】移动零
利用双指针遍历数组,其中一个指针遍历整个数组,另一个指针记录下一个非零元素应该放置的位置。通过交换非零元素和零元素的位置,将所有非零元素集中到数组前面,最终将零元素移到数组末尾。这种方法在保证非零元素相对顺序不变的同时,实现了原地操作。给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操作。输入: nums = [0,1,0,3,12]输出: [1,3,12,0,0]输入: nums = [0]原创 2024-08-14 18:05:14 · 258 阅读 · 0 评论 -
【LeetCode】删除链表中的节点
有一个单链表的 head,我们想删除它其中的一个节点 node。链表的所有值都是 唯一的,并且保证给定的节点 node 不是链表中的最后一个节点。解释:指定链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9。解释:指定链表中值为 1 的第三个节点,那么在调用了你的函数之后,该链表应变为 4 -> 5 -> 9。输入:head = [4,5,1,9], node = 5。输入:head = [4,5,1,9], node = 1。输出:[4,1,9]原创 2024-08-14 17:23:57 · 368 阅读 · 0 评论 -
【LeetCode】摆动排序
奇数索引 (i % 2 == 1):此时希望 nums[i] >= nums[i+1]。给你一个的整数数组 nums, 将该数组重新排序后使 nums[0] = nums[2]原创 2024-08-14 00:03:37 · 212 阅读 · 0 评论 -
数组列表中的最大距离
现在你需要从两个不同的数组中选择两个整数(每个数组选一个)并且计算它们的距离。两个整数 a 和 b 之间的距离定义为它们差的绝对值 |a-b|。你的任务就是去找到最大距离。一种得到答案 4 的方法是从第一个数组或者第三个数组中选择 1,同时从第二个数组中选择 5。输入: [[1,2,3], [4,5], [1,2,3]]给定 m 个数组,每个数组都已经按照。题目来源:LeetCode。原创 2024-08-13 23:24:32 · 199 阅读 · 0 评论 -
二叉树最长连续序列
最长连续序列路径 是依次递增 1 的路径。该路径,可以是从某个初始节点到树中任意节点,通过「父 - 子」关系连接而产生的任意路径。给你一棵指定的二叉树的根节点 root ,请你计算其中 最长连续序列路径 的长度。输入:root = [1,null,3,2,4,null,null,null,5]解释:当中,最长连续序列是 2-3。注意,不是 3-2-1,所以返回 2。解释:当中,最长连续序列是 3-4-5 ,所以返回结果为 3。输入:root = [2,null,3,2,null,1]原创 2024-08-12 16:22:54 · 293 阅读 · 0 评论 -
leetcode-反转链表
给你单链表的头节点head ,请你反转链表,并返回反转后的链表。输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]原创 2024-07-07 22:31:57 · 217 阅读 · 0 评论 -
leetcode-LRU缓存
请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。函数 get 和 put 必须以 O(1) 的平均时间复杂度运行。原创 2024-07-07 20:13:21 · 253 阅读 · 0 评论 -
leetcode-前K个高频元素
给你一个整数数组nums和一个整数k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]进阶:你所设计算法的时间复杂度必须优于O(nlogn) ,其中n是数组大小。原创 2024-07-07 17:05:12 · 259 阅读 · 0 评论 -
03_删除有序数组中的重复项
给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致。然后返回 nums 中唯一元素的个数。原创 2024-06-10 09:52:45 · 207 阅读 · 0 评论 -
02_移除元素
【代码】02_移除元素。原创 2024-06-08 18:28:57 · 161 阅读 · 0 评论 -
01_合并两个有序数组
合并数组问题原创 2024-06-08 17:43:52 · 148 阅读 · 0 评论