
数据结构与算法
-
_Evelyn_
这个作者很懒,什么都没留下…
展开
-
【LeetCode】每日一题(二十八)332. 重新安排行程 欧拉路径 图 dfs
332. 重新安排行程20200827难度:中等题目描述给定一个机票的字符串二维数组 [from, to],子数组中的两个成员分别表示飞机出发和降落的机场地点,对该行程进行重新规划排序。所有这些机票都属于一个从 JFK(肯尼迪国际机场)出发的先生,所以该行程必须从 JFK 开始。说明:如果存在多种有效的行程,你可以按字符自然排序返回最小的行程组合。例如,行程 [“JFK”, “LGA”] 与 [“JFK”, “LGB”] 相比就更小,排序更靠前所有的机场都用三个大写字母表示(机场代码)。原创 2020-08-27 14:20:53 · 273 阅读 · 0 评论 -
【LeetCode】每日一题(二十七)733. 图像渲染- dfs
733. 图像渲染难度:简单20200816题目描述有一幅以二维整数数组表示的图画,每一个整数表示该图画的像素值大小,数值在 0 到 65535 之间。给你一个坐标 (sr, sc) 表示图像渲染开始的像素值(行 ,列)和一个新的颜色值 newColor,让你重新上色这幅图像。为了完成上色工作,从初始坐标开始,记录初始坐标的上下左右四个方向上像素值与初始坐标相同的相连像素点,接着再记录这四个方向上符合条件的像素点与他们对应四个方向上像素值与初始坐标相同的相连像素点,……,重复该过程。将所有有记录原创 2020-08-16 19:31:18 · 218 阅读 · 0 评论 -
【LeetCode】周赛纪录(十一)第202场周赛20200816存在连续三个奇数的数组 使数组中所有元素相等的最小操作数 两球之间的磁力-二分 吃掉 N 个橘子的最少天数-BFS
周赛第202场202008165185. 存在连续三个奇数的数组题目描述1给你一个整数数组 arr,请你判断数组中是否存在连续三个元素都是奇数的情况:如果存在,请返回 true ;否则,返回 false 。示例 1:输入:arr = [2,6,4,1]输出:false解释:不存在连续三个元素都是奇数的情况。示例 2:输入:arr = [1,2,34,3,4,5,7,23,12]输出:true解释:存在连续三个元素都是奇数的情况,即 [5,7,23] 。提示:1 <=原创 2020-08-16 19:29:57 · 346 阅读 · 0 评论 -
【LeetCode】周赛纪录(十)第201场周赛20200809 整理字符串-模拟/栈 找出第 N 个二进制字符串的第 K 位-递归 和为目标值的不重叠非空子数组数目-前缀和 切棍子最小成本-区间dp
周赛第201场202008095483. 整理字符串题目描述1给你一个由大小写英文字母组成的字符串 s 。一个整理好的字符串中,两个相邻字符 s[i] 和 s[i + 1] 不会同时满足下述条件:0 <= i <= s.length - 2s[i] 是小写字符,但 s[i + 1] 是相同的大写字符;反之亦然 。请你将字符串整理好,每次你都可以从字符串中选出满足上述条件的 两个相邻 字符并删除,直到字符串整理好为止。请返回整理好的 字符串 。题目保证在给出的约束条件下,测试样例对原创 2020-08-10 10:32:10 · 437 阅读 · 0 评论 -
【LeetCode】周赛纪录(九)第200场周赛20200802 统计好三元组 找出数组游戏的赢家 排布二进制网格的最少交换次数-贪心 最大得分-双指针/动态规划
周赛第200场202008025475. 统计好三元组题目描述给你一个整数数组 arr ,以及 a、b 、c 三个整数。请你统计其中好三元组的数量。如果三元组 (arr[i], arr[j], arr[k]) 满足下列全部条件,则认为它是一个 好三元组 。0 <= i < j < k < arr.length|arr[i] - arr[j]| <= a|arr[j] - arr[k]| <= b|arr[i] - arr[k]| <= c其中原创 2020-08-02 20:59:24 · 228 阅读 · 0 评论 -
【LeetCode】每日一题(二十六)632. 最小区间 滑动窗口+哈希表 / 堆
632. 最小区间20200801难度:困难题目描述你有 k 个升序排列的整数数组。找到一个最小区间,使得 k 个列表中的每个列表至少有一个数包含在其中。我们定义如果 b-a < d-c 或者在 b-a == d-c 时 a < c,则区间 [a,b] 比 [c,d] 小。示例 1:输入:[[4,10,15,24,26], [0,9,12,20], [5,18,22,30]]输出: [20,24]解释: 列表 1:[4, 10, 15, 24, 26],24 在区间 [20,原创 2020-08-01 18:51:34 · 180 阅读 · 0 评论 -
【LeetCode】周赛纪录(八)第199场周赛20200726 重新排列字符串 灯泡开关 IV 好叶子节点对的数量 压缩字符串 II
周赛第199场202007265472. 重新排列字符串题目描述1给你一个字符串 s 和一个 长度相同 的整数数组 indices 。请你重新排列字符串 s ,其中第 i 个字符需要移动到 indices[i] 指示的位置。返回重新排列后的字符串。示例 1:输入:s = "codeleet", indices = [4,5,6,7,0,2,1,3]输出:"leetcode"解释:如图所示,"codeleet" 重新排列后变为 "leetcode" 。Solution1class So原创 2020-07-26 20:00:11 · 174 阅读 · 0 评论 -
【LeetCode】每日一题(二十五)312. 戳气球 动态规划 区间dp
312. 戳气球20200719难度:困难题目描述有 n 个气球,编号为0 到 n-1,每个气球上都标有一个数字,这些数字存在数组 nums 中。现在要求你戳破所有的气球。如果你戳破气球 i ,就可以获得 nums[left] * nums[i] * nums[right] 个硬币。 这里的 left 和 right 代表和 i 相邻的两个气球的序号。注意当你戳破了气球 i 后,气球 left 和气球 right 就变成了相邻的气球。求所能获得硬币的最大数量。说明:你可以假设 nums[原创 2020-07-19 11:20:23 · 299 阅读 · 0 评论 -
【LeetCode】每日一题(二十四)120. 三角形最小路径和 动态规划+降维优化
120. 三角形最小路径和20200714难度:中等题目描述给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。例如,给定三角形:[ [2], [3,4], [6,5,7], [4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。说明:如果你可以只使用 O(n) 的额外空间(n 为三角形的总原创 2020-07-14 15:02:14 · 161 阅读 · 0 评论 -
【LeetCode】每日一题(二十三)309. 最佳买卖股票时机含冷冻期 动态规划
309. 最佳买卖股票时机含冷冻期20200710难度:中等题目描述给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 。设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。示例:输入: [1,2,3,0,2]输出: 3 解释: 对应的交易状态为: [买入, 卖出, 冷冻期, 买入, 卖出]Soluti原创 2020-07-10 12:54:52 · 284 阅读 · 0 评论 -
【LeetCode】每日一题(二十二)面试题 17.13. 恢复空格 动态规划+Trie字典树优化
面试题 17.13. 恢复空格20200709难度:中等题目描述哦,不!你不小心把一个长篇文章中的空格、标点都删掉了,并且大写也弄成了小写。像句子"I reset the computer. It still didn’t boot!“已经变成了"iresetthecomputeritstilldidntboot”。在处理标点符号和大小写之前,你得先把它断成词语。当然了,你有一本厚厚的词典dictionary,不过,有些词没在词典里。假设文章用sentence表示,设计一个算法,把文章断开,要求未识原创 2020-07-10 12:52:58 · 222 阅读 · 0 评论 -
【LeetCode】每日一题(二十一)112. 路径总和 路径总和系列 递归+回溯
112. 路径总和20200707难度:简单题目描述给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 2 1返回 true, 因为存在目标和为原创 2020-07-07 16:01:09 · 265 阅读 · 0 评论 -
【LeetCode】每日一题(二十)32. 最长有效括号 栈 / 动态规划
32. 最长有效括号20200704难度:困难题目描述给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串的长度。示例 1:输入: "(()"输出: 2解释: 最长有效括号子串为 "()"示例 2:输入: ")()())"输出: 4解释: 最长有效括号子串为 "()()"Solution栈class Solution { public int longestValidParentheses(String s) { int a原创 2020-07-04 11:05:39 · 193 阅读 · 0 评论 -
【LeetCode】周赛纪录(七)第195场周赛20200628 判断路径是否相交 检查数组对是否可以被 k 整除-取模+哈希表 满足条件的子序列数目-二分+快速幂 满足不等式的最大值-双端队列
周赛第198场202006281496. 判断路径是否相交题目描述1给你一个字符串 path,其中 path[i] 的值可以是 'N'、'S'、'E' 或者 'W',分别表示向北、向南、向东、向西移动一个单位。机器人从二维平面上的原点 (0, 0) 处开始出发,按 path 所指示的路径行走。如果路径在任何位置上出现相交的情况,也就是走到之前已经走过的位置,请返回 True ;否则,返回 False 。示例 1:输入:path = "NES"输出:false 解释:该路径没有在任何位置相交原创 2020-07-03 21:50:19 · 3433 阅读 · 0 评论 -
【LeetCode】每日一题(十九)378. 有序矩阵中第K小的元素 二分查找/大根堆
378. 有序矩阵中第K小的元素20200702难度:中等题目描述给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩阵中第 k 小的元素。请注意,它是排序后的第 k 小元素,而不是第 k 个不同的元素。示例:matrix = [ [ 1, 5, 9], [10, 11, 13], [12, 13, 15]],k = 8,返回 13。提示:你可以假设 k 的值永远是有效的,1 ≤ k ≤ n2。Solution第k小,大根堆。但这种解原创 2020-07-02 09:47:05 · 232 阅读 · 0 评论 -
【LeetCode】每日一题(十八)209. 长度最小的子数组 双指针/前缀和+二分
209. 长度最小的子数组20200628难度:中等题目描述给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组,并返回其长度。如果不存在符合条件的连续子数组,返回 0。示例:输入: s = 7, nums = [2,3,1,2,4,3]输出: 2解释: 子数组 [4,3] 是该条件下的长度最小的连续子数组。进阶:如果你已经完成了O(n) 时间复杂度的解法, 请尝试 O(n log n) 时间复杂度的解法。来源:力扣(LeetCod原创 2020-06-28 15:41:50 · 207 阅读 · 0 评论 -
【LeetCode】每日一题(十七)41. 缺失的第一个正数 原地哈希 将数组视为哈希:数组索引代表哈希表的key,在对应元素上添加正负号表示key这个数字是否出现, 空间复杂度O(1)
41. 缺失的第一个正数20200627难度:困难题目描述给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。示例 1:输入: [1,2,0]输出: 3示例 2:输入: [3,4,-1,1]输出: 2示例 3:输入: [7,8,9,11,12]输出: 1提示:你的算法的时间复杂度应为O(n),并且只能使用常数级别的额外空间。Solution首先想到的是哈希表,但是不满足空间要求。如果数组中有≤0的数和>n的数,那么1到n中一定会有数字缺失。所以缺失的第一个原创 2020-06-27 10:15:17 · 177 阅读 · 0 评论 -
【LeetCode】每日一题(十六)139. 单词拆分 动态规划 dp[i]表示s[0..i-1]能否拆成单词
139. 单词拆分难度:简单20200625题目描述给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:输入: s = "leetcode", wordDict = ["leet", "code"]输出: true解释: 返回 true 因为 "leetcode" 可以被拆分成 "leet code"。示例 2:输入: s原创 2020-06-25 22:13:32 · 193 阅读 · 0 评论 -
【LeetCode】周赛纪录(六)第194场周赛20200621 数组异或操作 保证文件名唯一(哈希表)避免洪水泛滥(优先队列)找最小生成树里的关键边和伪关键边(Kruskal算法)
周赛第194场20200621[1486. 数组异或操作](https://leetcode-cn.com/problems/xor-operation-in-an-array/)题目描述1Solution1[1487. 保证文件名唯一](https://leetcode-cn.com/problems/making-file-names-unique/)题目描述2Solution2[1488. 避免洪水泛滥](https://leetcode-cn.com/problems/avoid-flood-in-原创 2020-06-25 22:09:04 · 429 阅读 · 0 评论 -
【LeetCode】周赛纪录(五)第193场周赛20200614 一维数组的动态和 不同整数的最少数目 制作 m 束花所需的最少天数 树节点的第 K 个祖先
第193场周赛[1480. 一维数组的动态和](https://leetcode-cn.com/problems/running-sum-of-1d-array/)题目描述1Solution1[1481. 不同整数的最少数目](https://leetcode-cn.com/problems/least-number-of-unique-integers-after-k-removals/)题目描述2Solution2[1482. 制作 m 束花所需的最少天数](https://leetcode-cn.co原创 2020-06-20 15:27:50 · 278 阅读 · 0 评论 -
【LeetCode】每日一题(十五)70. 爬楼梯 动态规划 滚动数组 斐波那契数列通项公式推导
DailyChallenge70. 爬楼梯20200613难度:简单题目描述假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?**注意:**给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 阶 + 2 阶3.原创 2020-06-13 08:49:27 · 440 阅读 · 0 评论 -
【LeetCode】每日一题(十四)15. 三数之和 排序+双指针 数字之和系列总结 两数之和四数最接近的三数之和
数字之和[15. 三数之和](https://leetcode-cn.com/problems/3sum/)题目描述Solution[1. 两数之和](https://leetcode-cn.com/problems/two-sum/)题目描述Solution[18. 四数之和](https://leetcode-cn.com/problems/4sum/)题目描述Solution[16. 最接近的三数之和](https://leetcode-cn.com/problems/3sum-closest/)题目原创 2020-06-12 09:57:41 · 189 阅读 · 0 评论 -
原创 【LeetCode】每日一题(十三)739.每日温度 单调栈系列 下一个更大元素 柱状图中最大的矩形
单调栈系列题目[739. 每日温度](https://leetcode-cn.com/problems/daily-temperatures/)题目描述Solution[496. 下一个更大元素 I](https://leetcode-cn.com/problems/next-greater-element-i/)题目描述Solution[503. 下一个更大元素 II](https://leetcode-cn.com/problems/next-greater-element-ii/)题目描述Soluti原创 2020-06-11 14:23:40 · 159 阅读 · 0 评论 -
【LeetCode】每日一题(十二)9. 回文数 反转一半数字 / 转为字符串双指针比较
9. 回文数20200610难度:简单题目描述判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。Solution方法一:转化为字符串,然后双指针比较字符串是否为原创 2020-06-10 10:31:47 · 134 阅读 · 0 评论 -
【LeetCode】每日一题(十一)面试题46. 把数字翻译成字符串 动态规划+滚动数组优化 / 递归
面试题46. 把数字翻译成字符串20200609难度:中等题目描述给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。示例 1:输入: 12258输出: 5解释: 12258有5种不同的翻译,分别是"bccfi", "bwfi", "bczi", "mcfi"和"mzi"提示:0 <= num <原创 2020-06-10 10:29:50 · 170 阅读 · 0 评论 -
【LeetCode】每日一题(十)990. 等式方程的可满足性 并查集 并查集的优化 路径压缩
990. 等式方程的可满足性20200608难度:中等题目描述给定一个由表示变量之间关系的字符串方程组成的数组,每个字符串方程 equations[i] 的长度为 4,并采用两种不同的形式之一:“a==b” 或 “a!=b”。在这里,a 和 b 是小写字母(不一定不同),表示单字母变量名。只有当可以将整数分配给变量名,以便满足所有给定的方程时才返回 true,否则返回 false。示例 1:输入:["a==b","b!=a"]输出:false解释:如果我们指定,a = 1 且 b = 1,原创 2020-06-08 17:04:06 · 186 阅读 · 0 评论 -
【LeetCode】每日一题(九)126. 单词接龙 II 广度优先搜索bfs 图 双向广度优先搜索+回溯
126. 单词接龙 II20200607难度:困难题目描述给定两个单词(beginWord 和 endWord)和一个字典 wordList,找出所有从 beginWord 到 endWord 的最短转换序列。转换需遵循如下规则:每次转换只能改变一个字母。转换过程中的中间单词必须是字典中的单词。说明:如果不存在这样的转换序列,返回一个空列表。所有单词具有相同的长度。所有单词只由小写字母组成。字典中不存在重复的单词。你可以假设 beginWord 和 endWord 是非空的,且原创 2020-06-07 17:29:36 · 254 阅读 · 0 评论 -
【LeetCode】周赛纪录(四)第192场周赛20200607 重新排列数组 数组中的k个最强值 设计浏览器历史记录 给房子涂色
第192场周赛[5428. 重新排列数组](https://leetcode-cn.com/problems/shuffle-the-array/)题目描述Solution[5429. 数组中的 k 个最强值](https://leetcode-cn.com/problems/the-k-strongest-values-in-an-array/)题目描述Solution[5430. 设计浏览器历史记录](https://leetcode-cn.com/problems/design-browser-his原创 2020-06-07 16:29:54 · 412 阅读 · 0 评论 -
【LeetCode】每日一题(八)128. 最长连续序列 并查集/哈希表
128. 最长连续序列20200606难度:困难题目描述给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为 O(n)。示例:输入: [100, 4, 200, 1, 3, 2]输出: 4解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。Solution方法一排序+比较先从小到大排序遍历数组,比较相邻的两项,如果相同,则跳过,继续遍历下一项如果 前一项+1 等于当前项,说明遇到连续项,cur +1否则,说明连续中断,将 cur重置为 1原创 2020-06-06 12:50:20 · 245 阅读 · 0 评论 -
【LeetCode】每日一题(七)面试题29. 顺时针打印矩阵 按层模拟
面试题29. 顺时针打印矩阵20200605难度:简单题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]示例 2:输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]限制:0 <= matrix.length <= 10原创 2020-06-05 08:24:08 · 143 阅读 · 0 评论 -
【LeetCode】每日一题(六)238. 除自身以外数组的乘积 左右乘积列表
238. 除自身以外数组的乘积20200604难度:中等题目描述给你一个长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。示例:输入: [1,2,3,4]输出: [24,12,8,6]提示:题目数据保证数组之中任意元素的全部前缀元素和后缀(甚至是整个数组)的乘积都在 32 位整数范围内。说明:请不要使用除法,且在 O(n) 时间复杂度内完成此题。进阶:你可以原创 2020-06-05 08:23:01 · 127 阅读 · 0 评论 -
【LeetCode】周赛纪录(三)第191场周赛20200531 数组中两元素的最大乘积 切割后面积最大的蛋糕 重新规划路线 两个盒子中球的颜色数相同的概率
文章目录[1464. 数组中两元素的最大乘积](https://leetcode-cn.com/problems/maximum-product-of-two-elements-in-an-array/)题目描述Solution[1465. 切割后面积最大的蛋糕](https://leetcode-cn.com/problems/maximum-area-of-a-piece-of-cake-after-horizontal-and-vertical-cuts/)题目描述Solution[1466. 重新规原创 2020-06-03 22:02:30 · 328 阅读 · 0 评论 -
【LeetCode】每日一题(五)[新21点]获得不少于 K 分时停止抽取数字求分数不超过 N 的概率 动态规划
837. 新21点爱丽丝参与一个大致基于纸牌游戏 “21点” 规则的游戏,描述如下:爱丽丝以 0 分开始,并在她的得分少于 K 分时抽取数字。 抽取时,她从 [1, W] 的范围中随机获得一个整数作为分数进行累计,其中 W 是整数。 每次抽取都是独立的,其结果具有相同的概率。当爱丽丝获得不少于 K 分时,她就停止抽取数字。 爱丽丝的分数不超过 N 的概率是多少?示例1:输入:N = 10, K = 1, W = 10输出:1.00000说明:爱丽丝得到一张卡,然后停止。示例2:输入:N原创 2020-06-03 13:45:12 · 217 阅读 · 0 评论 -
【LeetCode】每日一题(四)不用乘除法、for、while、if、else、switch、case等关键字求1+2+…+n
面试题64. 求1+2+…+n20200602难度:中等题目描述求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。示例 1:输入: n = 3输出: 6示例 2:输入: n = 9输出: 45限制:1 <= n <= 10000Solution需要实现 “当 n = 1 时终止递归” 的需求。短路效应:条件与 && 具有短路原则,即在第一个条件语句为原创 2020-06-02 16:21:23 · 469 阅读 · 0 评论 -
【LeetCode】每日一题(三)对称二叉树 递归
101. 对称二叉树20200531难度:简单题目描述给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3Solution递归两个根结点具有相同的值每个树的右子树都与另一个树的左子树镜像对称/** *原创 2020-05-31 13:11:29 · 127 阅读 · 0 评论 -
【LeetCode】每日一题(二)柱状图中最大的矩形 单调栈+哨兵技巧
84. 柱状图中最大的矩形20200530难度:困难题目描述给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]。图中阴影部分为所能勾勒出的最大矩形面积,其面积为 10 个单位。示例:输入: [2,1,5,6,2,3]输出: 10Solution思路一暴力法遍历。对每个高度,分别向左右扩展,求这个高度对应的最大原创 2020-05-30 13:11:16 · 448 阅读 · 0 评论 -
【LeetCode】每日一题(一)打家劫舍系列 动态规划
198. 打家劫舍20200529难度:简单题目描述你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例:示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。原创 2020-05-30 13:04:43 · 411 阅读 · 0 评论 -
【LeetCode】周赛纪录(二)第 190 场周赛20200524 检查单词前缀 定长子串中元音的最大数目 二叉树中的伪回文路径 两个子序列的最大点积
5416. 检查单词是否为句中其他单词的前缀难度:简单题目描述:给你一个字符串 sentence 作为句子并指定检索词为 searchWord ,其中句子由若干用 单个空格 分隔的单词组成。请你检查检索词 searchWord 是否为句子 sentence 中任意单词的前缀。如果 searchWord 是某一个单词的前缀,则返回句子 sentence 中该单词所对应的下标(下标从 1 开始)。如果 searchWord 是多个单词的前缀,则返回匹配的第一个单词的下标(最小下标)。如果 sear原创 2020-05-26 17:01:33 · 329 阅读 · 0 评论 -
【LeetCode】周赛纪录(一)第 189 场周赛20200517
1450. 在既定时间做作业的学生人数难度:简单给你两个整数数组 startTime(开始时间)和 endTime(结束时间),并指定一个整数 queryTime 作为查询时间。已知,第 i 名学生在 startTime[i] 时开始写作业并于 endTime[i] 时完成作业。请返回在查询时间 queryTime 时正在做作业的学生人数。形式上,返回能够使 queryTime 处于区间 [startTime[i], endTime[i]](含)的学生人数。直达链接class Solutio原创 2020-05-22 11:05:54 · 294 阅读 · 0 评论 -
【数据结构与算法】动态规划(一)背包问题总结 0-1背包 完全背包 数位成本和为目标值的最大数字
动态规划的三个基本要素:最优子结构边界条件状态转移方程0-1背包有N件物品和一个容量为V的背包。第i件物品的费用是w[i],价值是v[i],求将哪些物品装入背包可使价值总和最大。限定每个物品要么拿(1个)要么不拿(0个)普通解法用f[n,C]来表示将n个物品放入容量为C的背包可以得到的最大收益,第i个物品有拿与不拿两种情况,表示为:状态转移方程f[i][c] = max( f[i - 1][c], f[i - 1][c - w[i]] + v[i] )代码public static原创 2020-05-21 12:38:47 · 743 阅读 · 0 评论