Leetcode
与玛格丽特的午后
Attention should be focus farther down the road.
展开
-
leetcode 451.根据字符出现频率排序
一、题目给定一个字符串,请将字符串里的字符按照出现的频率降序排列输入:"tree"输出:"eert"二、解法2.1 桶排序解题思路:本题也可用其他思路,诸如优先队列和大根堆来对频率进行合适的排序。相比较桶排序时间复杂度更优。统计每个字符出现的频率,建立以频率大小为索引的桶,存放相对应的字符。最后由出现频率大到小的桶进行遍历输出 ,得到最终结果。class Solution {public: string frequencySort(string s) { un原创 2021-07-03 20:39:27 · 107 阅读 · 0 评论 -
leetcode 76. 最小覆盖子串
一、题目给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 “” 。输入:s = "ADOBECODEBANC", t = "ABC"输出:"BANC"二、解法2.1 滑动窗口解题思路:本题使用滑动窗口求解,即两个指针 l 和 r 都是从最左端向最右端移动,且 l 的位置一定在r 的左边或重合。注意本题虽然在 for 循环里出现了一个 while 循环,但是因为 while 循环负责移动 l 指针,原创 2021-05-17 14:34:50 · 117 阅读 · 0 评论 -
剑指 Offer 47. 礼物的最大价值
一、题目在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?输入:[ [1,3,1], [1,5,1], [4,2,1]]输出:12解释:路径 1→3→5→2→1 可以拿到最多价值的礼物二、解法2.1 动态规划解题思路:利用动态规划可以减少重复计算,dp[i][j]表示到达位置i原创 2021-05-17 11:56:02 · 86 阅读 · 0 评论 -
leetcode 42. 接雨水
一、题目给定 n 个非负整数表示每个宽度为 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.1 单调栈解题思路:维护一个单调递减栈,如果出现比栈顶元素大的元素,则进行雨水单位计算class Solution {public:原创 2021-05-13 13:48:46 · 78 阅读 · 0 评论 -
leetcode 739. 每日温度
一、题目给定每天的温度,求对于每一天需要等几天才可以等到更暖和的一天。如果该天之后不存在更暖和的天气,则记为 0输入:temperatures = [73, 74, 75, 71, 69, 72, 76, 73]输出:[1, 1, 4, 2, 1, 1, 0, 0]二、解法解题思路:本题为单调栈经典题型,我们可以维持一个单调递减的栈,表示每天的温度;为了方便计算天数差,我们这里存放位置(即日期)而非温度本身。我们从左向右遍历温度数组,对于每个日期 p,如果 p 的温度比栈顶存储位置 q 的原创 2021-05-13 13:00:43 · 145 阅读 · 0 评论 -
leetcode 403. 青蛙过河
一、题目给定石子位置的列表stones(升序),青蛙可以跳上石子,但不能跳入水中。如果青蛙一步跳跃了k个单位,那么它接下来跳跃的距离只能为k-1、k或k+1个单位。青蛙只能向前方跳跃。输入:stones = [0,1,3,5,6,8,12,17]输出:true解释:青蛙可以成功过河,按照如下方案跳跃:跳 1 个单位到第 2 块石子, 然后跳 2 个单位到第 3 块石子, 接着 跳 2 个单位到第 4 块石子, 然后跳 3 个单位到第 6 块石子, 跳 4 个单位到第 7 块石子,原创 2021-04-29 13:14:41 · 112 阅读 · 0 评论 -
剑指 Offer 34. 二叉树中和为某一值的路径
一、题目打印出二叉树中节点值的和为输入整数的所有路径(从根节点一直到叶子节点的路径)输入:给定如下二叉树,以及目标和 target = 22 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1输出:[ [5,4,11,2], [5,8,4,5]]二、解法由根节点出发原创 2021-04-28 15:52:44 · 87 阅读 · 0 评论 -
leetcode 684. 冗余连接
一、题目找出无向图中的冗余连接,即将无向图还原成二叉树输入: [[1,2], [1,3], [2,3]]输出: [2,3]解释: 给定的无向图为: 1 / \2 - 3二、解法2.1 并查集思路:通过并查集寻找附加的边,初始时每个节点都属于不同的连通分量,遍历每一条边,判断这条边连接的两个顶点是否属于相同的连通分量如果两个顶点属于不同的连通分量,则说明在遍历到当前的边之前,这两个顶点之间不连通,因此当前的边不会导致环出现,合并这两个顶点的连通分量。如果两个顶点属于相同的连通分量原创 2021-04-28 13:48:10 · 125 阅读 · 0 评论