![](https://img-blog.csdnimg.cn/20210405180721214.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Leetcode
文章平均质量分 59
记录刷题时刻
会编程的林俊杰
这个作者很懒,什么都没留下…
展开
-
LC.77 组合
题目描述: 给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。示例: 输⼊: n = 4, k = 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ]思路: 对于给出的用例,要选出集合个数为2的所有组合,很容易想到的是双重for循环解决问题,集合个数...原创 2021-12-19 21:00:07 · 571 阅读 · 0 评论 -
LC.746 使用最小花费爬楼梯
题目描述:解法:classSolution{publicintminCostClimbingStairs(int[]cost){intn=cost.length;int[]dp=newint[n];dp[0]=cost[0];dp[1]=cost[1];for(inti=2;i<n;i++){dp...原创 2021-12-14 16:55:32 · 797 阅读 · 0 评论 -
LC.169.多数元素
前言 一题三解,又学到了新知识,重点关注第三种----摩尔投票法。题目描述给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例1:输入:[3,2,3]输出:3示例2:输入:[2,2,1,1,1,2,2]输出:2解法 解法一:如果将数组 nums 中的所有元素按照单调递增或单调递减的顺序排序,那么下标为 n/2 的元素(下标从 0 开始)一定是众数。class原创 2021-05-08 20:25:51 · 72 阅读 · 0 评论 -
LC.122. 买卖股票的最佳时机 II
题目描述给定一个数组 prices ,其中 prices[i] 是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: prices = [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。随后,在第 4 天(股票价原创 2021-05-07 16:43:51 · 77 阅读 · 0 评论 -
LC.376.摆动序列
前言 本题是我刷的第二道贪心算法类的题目,但是第一眼确实没看出要用贪心来做,应该是跟我做的题少有关。但其实,即使你不太理解贪心,对于这道题也是可以做出来的,下面来介绍我的解题思路。题目描述如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为 摆动序列 。第一个差(如果存在的话)可能是正数或负数。仅有一个元素或者含两个不等元素的序列也视作摆动序列。例如,[1, 7, 4, 9, 2, 5] 是一个 摆动序列 ,因为差值 (6, -3, 5, -7, 3)是正负交替出现的。...原创 2021-05-05 11:38:19 · 177 阅读 · 0 评论 -
LC.27. 移除元素
前言 时隔一个月,这道题出现在昨天的每日一题,为了保持题感,也是重刷了一遍,但是读完一遍题居然没有立刻想到之前怎么做的,果然必要的复习是必不可少的。但是经过一个多月的刷题,对这道题还是有想法的,果不其然,我第一次写出了和官解一样的代码,有点小开心!题目描述 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新原创 2021-04-20 23:38:42 · 104 阅读 · 0 评论 -
LC.67. 二进制求和
前言 如果你之前刷过两数相加这类型题,那么对于本题,你很快就会有解题思路。题目描述 给你两个二进制字符串,返回它们的和(用二进制表示)。 输入为 非空 字符串且只包含数字 1 和 0。示例 1:输入: a = “11”, b = “1”输出: “100”示例 2:输入: a = “1010”, b = “1011”输出: “10101”思路 首先我们需要明白,二进制的核心思想就是满二进一,而作为两数相加的类型题,我们需要额外注意到的就是进位问题,对于这一点,我设置了一个布尔类原创 2021-04-20 21:49:07 · 92 阅读 · 0 评论 -
LC.28. 实现 strStr()
题目描述 实现 strStr() 函数。 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。示例 1:输入:haystack = “hello”, needle = “ll”输出:2示例 2:输入:haystack = “aaaaa”, needle = “bba”输出:-1示例 3:输入:haystack = “”, needle = “”输出原创 2021-04-20 21:32:31 · 91 阅读 · 0 评论 -
LC.345. 反转字符串中的元音字母
前言 继续字符串刷题之旅!本题难度为简单,利用双指针也是完成了多种解法,但是解法较他人的稍复杂,接下来先介绍我自己的解法,然后再总结一种优化解法。题目描述 编写一个函数,以字符串作为输入,反转该字符串中的元音字母。 示例 1: 输入:“hello” 输出:“holle” 示例 2: 输入:“leetcode” 输出:“leotcede”思路 关于反转问题,首先要想到的是使用双指针来解题,然后按照这个思路接着往下想,需要使用左右指针分别指向符合条件的字符,然后进行反转原创 2021-04-20 21:10:45 · 106 阅读 · 0 评论 -
LC.20. 有效的括号
前言 一道字符串简单题:LC.20. 有效的括号 给我整自闭了,可能是刚开始刷字符串类型的题,有点不熟练,但是还是难以掩饰我菜的事实。啊 ~LC.20. 有效的括号 重新梳理思路: 因为要对三组括号进行判断,可以存放在一个 map 字典(牺牲空间来换取时间),以此构造左右符号的对应关系,这样在进行括号匹配时,时间复杂度只需 O(1) 即可。 接下来对字符串进行遍历时,如果遇到左括号则进行压栈;遇到右括号则与栈顶元素进行匹配,若匹配成功,则出栈,否则直接返回 False 。这里需要注意的是,为原创 2021-04-16 13:30:08 · 80 阅读 · 0 评论 -
剑指 Offer 05. 替换空格
前言 本文主要介绍一道剑指offer的简单字符串题:剑指 Offer 05. 替换空格,通过多解法递进解决该题,从而加深对字符串操作的理解。题目描述 请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 示例: 输入:s = “We are happy.” 输出:“We%20are%20happy.” 思路: 在Java中,String 被设计为「不可变类」,对 String 类型的操作都是「只读」的,所以就该题而言,不存在空间复杂度为O(1)的解法。 解法一:原创 2021-04-15 15:03:29 · 44 阅读 · 0 评论 -
关于反转字符串
前言 本文将介绍Leetcode上关于反转字符串的两道题:LC.344. 反转字符串,LC.541. 反转字符串 II,完成这两道题后你将对字符串操作有一个新的认识。LC.344. 反转字符串 思路:一看到原地修改数组,很自然就会想到利用双指针技巧来解题,接着往下思考,首先设置 left、right 两个指针,其分别指向给定字符数组的首、尾;然后在 left < right 的循环条件下开始循环,每次循环交换两指针所指向的元素,交换成功后 left 后移,right 前移;不符合条件则跳出循环原创 2021-04-14 20:17:29 · 160 阅读 · 0 评论