
leetcode
文章平均质量分 56
The August
这个作者很懒,什么都没留下…
展开
-
leetcode 239. 滑动窗口最大值
给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回 滑动窗口中的最大值 。示例 1:输入:nums = [1,3,-1,-3,5,3,6,7], k = 3输出:[3,3,5,5,6,7]解释:滑动窗口的位置 最大值[1 3 -1] -3 5 3 6 7 31 [3 -1 -3] 5 3 6 7 3原创 2022-03-27 12:20:04 · 395 阅读 · 62 评论 -
leetcode 42. 接雨水(双指针、动态规划、单调栈)
给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。示例 1:输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。示例 2:输入:height = [4,2,0,3,2,5]输出:9提示:n == height.length1 <= n <= 2原创 2022-03-27 11:30:35 · 2746 阅读 · 22 评论 -
字符串匹配算法(BF算法&&KMP算法)
字符串匹配算法暴力匹配(BF)算法KMP算法next数组求next数组的练习暴力匹配(BF)算法BF算法,即暴力(Brute Force)算法,是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和 T的第二个字符;若不相等,则比较S的第二个字符和T的第一个字符,依次比较下去,直到得出最后的匹配结果。BF算法是一种蛮力算法。eg:注:只要在匹配的过程当中,匹配失败,那么:i回退到刚刚位置的下一个,j回退到0下标重新开原创 2022-03-20 16:26:07 · 2775 阅读 · 52 评论 -
leetcode 151. 颠倒字符串中的单词(进阶版)
给你一个字符串 s ,颠倒字符串中 单词 的顺序。单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。注意:输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。示例 1:输入:s = “the sky is blue”输出:“blue is sky the”示例 2:输入:s = " hello world原创 2022-03-19 15:48:37 · 421 阅读 · 22 评论 -
leetcode 59. 螺旋矩阵 II
给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。示例 1:输入:n = 3输出:[[1,2,3],[8,9,4],[7,6,5]]示例 2:输入:n = 1输出:[[1]]提示:1 <= n <= 20思路:代码如下:...原创 2022-03-11 10:27:47 · 2629 阅读 · 38 评论 -
leetcode 209. 长度最小的子数组(详解)
给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。示例 1:输入:target = 7, nums = [2,3,1,2,4,3]输出:2解释:子数组 [4,3] 是该条件下的长度最小的子数组。示例 2:输入:target = 4, nums = [1,4,4]输出:1示例 3:原创 2022-03-10 15:08:59 · 845 阅读 · 18 评论 -
leetcode 27. 移除元素
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以 「 引用 」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下:// nums 是以“引用”方式传递的。也就是说,不对实参作任何拷贝i原创 2022-03-08 14:30:01 · 296 阅读 · 26 评论 -
leetcode 704. 二分查找
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。示例 1:输入: nums = [-1,0,3,5,9,12], target = 9输出: 4解释: 9 出现在 nums 中并且下标为 4示例 2:输入: nums = [-1,0,3,5,9,12], target = 2输出: -1解释: 2 不存在 nums 中因此返回 -1提示:你可以假设 num原创 2022-03-07 10:53:31 · 289 阅读 · 27 评论 -
leetcode 692. 前K个高频单词
给定一个单词列表 words 和一个整数 k ,返回前 k 个出现次数最多的单词。返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率, 按字典顺序排序。示例 1:输入: words = [“i”, “love”, “leetcode”, “i”, “love”, “coding”], k = 2输出: [“i”, “love”] 解析: “i” 和 “love” 为出现次数最多的两个单词,均为2次。注意,按字母顺序 “i” 在 “love” 之前。示例 2:输入: [原创 2022-02-28 15:59:09 · 507 阅读 · 44 评论 -
leetcode 150. 逆波兰表达式求值(详解)
根据 逆波兰表示法,求表达式的值。有效的算符包括 +、-、*、/ 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。注意 : 两个整数之间的除法只保留整数部分。可以保证给定的逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例 1:输入:tokens = [“2”,“1”,"+",“3”,"*"]输出:9解释:该算式转化为常见的中缀算术表达式为:((2 + 1) *3) = 9示例 2:输入:tokens = [“10”,“6”,“9”,“3”原创 2022-02-10 14:19:42 · 1228 阅读 · 31 评论 -
leetcode155. 最小栈
设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。push(x) —— 将元素 x 推入栈中。pop() —— 删除栈顶的元素。top() —— 获取栈顶元素。getMin() —— 检索栈中的最小元素。示例:输入:["MinStack","push","push","push","getMin","pop","top","getMin"][[],[-2],[0],[-3],[],[],[],[]]输出:[null,null,null,null,原创 2022-02-09 17:06:33 · 839 阅读 · 24 评论 -
leetcode118. 杨辉三角
给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。示例 :输入: numRows = 5输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]提示:1 <= numRows <= 30思路:首先创造 vector<vector> vv,将他每个对象中的数组初始化,首位置和末位置为1,其余位置为0其次,找出数组中为0的元素,为0的数是它左上方原创 2021-12-30 18:32:49 · 635 阅读 · 3 评论 -
leetcode136. 只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 :输入: [2,2,1]输出: 1思路:题目中给出除了某个元素只出现一次以外,其余每个元素均出现两次,这时就可以用 ^(异或)运算符,相同的数异或为0,0与任何数异或都为该数本身遍历该数组,使其数组中的每个元素都异或,最终异或出来的结果就是只出现一次的元素代码如下:class Solution {pub原创 2021-12-30 16:39:45 · 473 阅读 · 4 评论 -
leetcode415. 字符串相加
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回。你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。示例:输入:num1 = “11”, num2 = “123”输出:“134”提示:1 <= num1.length, num2.length <= 104num1 和num2 都只包含数字 0-9num1 和num2 都不包含任何前导零思路:首先定义两个变量end1原创 2021-12-27 18:27:59 · 330 阅读 · 5 评论 -
leetcode125. 验证回文串
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。**说明:**本题中,我们将空字符串定义为有效的回文串。示例:输入: “A man, a plan, a canal: Panama”输出: true解释:“amanaplanacanalpanama” 是回文串提示:1 <= s.length <= 2 * 105字符串 s 由 ASCII 字符组成思路:首先将字符串s中的大写字母转化为小写字母其次,定义两个变量begin和e原创 2021-12-27 17:30:59 · 566 阅读 · 3 评论 -
leetcode387. 字符串中的第一个唯一字符
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。示例:s = “leetcode”返回 0s = “loveleetcode”返回 2提示:你可以假定该字符串只包含小写字母。思路:首先运用统计排序的思想,将字符串s中每个字符统计出出现的次数,并将出现的次数记录在arr数组中(字符串中只包含小写字母,因此很好统计)其次定义变量i用来记录字符串中字符的位置,i从字符串的第一个位置开始找,直到找到它的第一个不重复的字符,并返回它的位置;否则,返回原创 2021-12-26 16:13:24 · 396 阅读 · 4 评论 -
leetcode917. 仅仅反转字母
给定一个字符串 S,返回 “反转后的” 字符串,其中不是字母的字符都保留在原地,而所有字母的位置发生反转。示例:输入:“ab-cd”输出:“dc-ba”提示:S.length <= 10033 <= S[i].ASCIIcode <= 122S 中不包含 \ or "思路:首先定义两个变量begin和end,begin记录字符串的首位置,end记录字符串的尾其次如果begin和end记录的位置都是字母时,这两个位置的字母进行交换最后begin和end跳向原创 2021-12-25 12:12:20 · 548 阅读 · 2 评论