
Algorithms
元晦CS
一辈子很长,要和有趣的人在一起;
余生,不要再辜负青春和梦想!
展开
-
【Leetcode 1039】多边形三角剖分的最低得分
问题描述给定 N,想象一个凸 N 边多边形,其顶点按顺时针顺序依次标记为 A[0], A[i], ..., A[N-1]。假设您将多边形剖分为 N-2 个三角形。对于每个三角形,该三角形的值是顶点标记的乘积,三角剖分的分数是进行三角剖分后所有 N-2 个三角形的值之和。返回多边形进行三角剖分后可以得到的最低分。测试用例1:输入:[1,2,3]输出:6解释:多边形已经三角化,唯一三角形的分数为 6。测试用例2:测试用例3:输入:[1,3,1,4,1,5]输出:13解释:最低分原创 2020-05-13 08:42:39 · 218 阅读 · 0 评论 -
【Leetcode 730】统计不同回文子字符串
问题描述给定一个字符串 S,找出 S 中不同的非空回文子序列个数,并返回该数字与 10^9 + 7 的模。通过从 S 中删除 0 个或多个字符来获得子字符序列。如果一个字符序列与它反转后的字符序列一致,那么它是回文字符序列。如果对于某个 i,A_i != B_i,那么 A_1, A_2, … 和 B_1, B_2, … 这两个字符序列是不同的。测试用例1:输入:S = ‘bccb...原创 2020-05-08 09:57:49 · 261 阅读 · 0 评论 -
【Leetcode 516】最长回文子序列
问题描述给定一个字符串s,找到其中最长的回文子序列。可以假设s的最大长度为1000。示例 1:输入:“bbbab”输出: 4一个可能的最长回文子序列为 “bbbb”。示例 2:输入:“cbbd”输出: 2参考实现过程class Solution {public: int longestPalindromeSubseq(string s) { ...原创 2020-05-07 00:26:26 · 121 阅读 · 0 评论 -
【Leetcode 10】正则表达式匹配
问题描述给你一个字符串 s 和一个字符规律 p,请你来实现一个支持‘.’ 和 ‘’ 的正则表达式匹配‘.’ 匹配任意单个字符'’ 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *。示例1:输入:s = “aa”...原创 2020-05-06 00:48:57 · 128 阅读 · 0 评论 -
【Leetcode 44】通配符匹配
问题描述给定一个字符串 (s) 和一个字符模式 § ,实现一个支持 ‘?’ 和 ‘*’ 的通配符匹配。‘?’ 可以匹配任何单个字符。‘*’ 可以匹配任意字符串(包括空字符串)。两个字符串完全匹配才算匹配成功。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 ? 和 *。示例1:输入:s = “aa”p = “...原创 2020-05-05 08:27:34 · 125 阅读 · 0 评论 -
【Leetcode 72】编辑距离
问题描述:给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符测试用例1:输入:word1 = “horse”, word2 = “ros”输出:3解释:horse -> rorse (将 ‘h’ 替换为 ‘r’)rorse -> ...原创 2020-05-01 01:39:21 · 198 阅读 · 0 评论 -
【Leetcode 714】买入股票的最佳时机含手续费
问题描述给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 ;非负整数 fee 代表了交易股票的手续费用。你可以无限次地完成交易,但是你每笔交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。返回获得利润的最大值。注意:这里的一笔交易指买入持有并卖出股票的整个过程,每笔交易你只需要为支付一次手续费。测试用例:输入: price...原创 2020-04-30 00:42:54 · 115 阅读 · 0 评论 -
【Leetcode 309】买入股票的最佳时机含冷冻期
问题描述:给定一个整数数组,其中第i个元素代表了第i天的股票价格 。设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。测试用例:输入: [1,2,3,0,2]输出: 3 解释: 对应的交易状...原创 2020-04-29 01:10:00 · 315 阅读 · 0 评论 -
【Leetcode 188】买入股票的最佳时机Ⅳ
问题描述:给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。测试用例1:输入: [2,4,1], k = 2输出: 2解释: 在第 1 天 (股票价格 = 2) 的时候买入,在第 2 天 (股票价格 = 4) 的时候卖...原创 2020-04-27 23:43:41 · 278 阅读 · 0 评论 -
【Leetcode 122】买卖股票的最佳时机 Ⅲ
问题描述:给定一个数组,它的第i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。测试用例1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = ...原创 2020-04-24 23:51:08 · 119 阅读 · 0 评论 -
【leetcode 121】买卖股票的最佳时机
问题描述:给定一个数组,它的第i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。注意:你不能在买入股票前卖出股票。测试用例1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6...原创 2020-04-24 00:26:11 · 109 阅读 · 0 评论 -
【Leetcode 213】打家劫舍Ⅱ
问题描述你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。测试用例1:输入: [2,3,2]输出...原创 2020-04-22 00:19:38 · 156 阅读 · 0 评论 -
【Leetcode 198】打家劫舍
问题描述:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。LeetCode:https://leetcode-cn.com/problems/house-...原创 2020-04-21 00:50:27 · 113 阅读 · 0 评论 -
【Leetcode 354】俄罗斯套娃信封问题
题目描述给定一些标记了宽度和高度的信封,宽度和高度以整数对形式 (w, h) 出现。当另一个信封的宽度和高度都比这个信封大的时候,这个信封就可以放进另一个信封里,如同俄罗斯套娃一样。请计算最多能有多少个信封能组成一组“俄罗斯套娃”信封(即可以把一个信封放到另一个信封里面)。说明:不允许旋转信封。测试用例:输入: envelopes = [[5,4],[6,4],[6,7],[2,3]]...原创 2020-04-19 00:52:37 · 183 阅读 · 0 评论 -
【Leetcode】 887 鸡蛋掉落
你将获得K个鸡蛋,并可以使用一栋从1到N共有 N层楼的建筑。每个蛋的功能都是一样的,如果一个蛋碎了,你就不能再把它掉下去。你知道存在楼层F ,满足0 <= F <= N 任何从高于 F的楼层落下的鸡蛋都会碎,从F楼层或比它低的楼层落下的鸡蛋都不会破。每次移动,你可以取一个鸡蛋(如果你有完整的鸡蛋)并把它从任一楼层X扔下(满足1 <= X...原创 2020-04-18 00:29:39 · 148 阅读 · 0 评论 -
【Leetcode 152】 乘积最大子数组
问题描述给你一个整数数组nums,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字)。输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。输入: [-2,0,-1]输出: 0解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。参考实现class Solution {public: int ma...原创 2020-04-17 00:30:19 · 125 阅读 · 0 评论 -
【Leetcode 53】最大子序和的求解方法,直接秒懂~
问题描述最长子序和:给定一个整数数组nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。我们用Leetcode中的题目为例子,URL传送-->https://leetcode-cn.com/problems/maximum-subarray/输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1...原创 2020-04-16 00:46:30 · 341 阅读 · 0 评论 -
【Leetcode 120】三角形最短路径——动态规划解法
问题描述给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。例如,给定三角形:[ [2], [3,4], [6,5,7], [4,1,8,3]]为了方便观看, 我们转换一下[[2],[3,4],[6,5,7],[4,1,8,3]]解题思路我们采用动态规划, 申请一个一维数组dp[j],他的最小值等...原创 2020-04-15 00:54:45 · 670 阅读 · 0 评论 -
dp——最长公共子序列(LCS)
问题描述给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。 例如,"ace" 是 "abcde" 的子序列,但 "aec" 不是 "abcde" 的子序列。两个字符串的「公共子序列」是这两个字符串所共同拥有的子序列。 若...原创 2020-04-14 01:28:51 · 220 阅读 · 0 评论 -
dp——最长上升子序列(LIS)
问题描述最长上升子序列LIS(longest increasing subsequence):给定一个长度为n的序列(a1,a2,a3,...,an) a1<a2<a3<...<an从中选取一个子序列,这个子序列需要单调递增。问最长上升子序列(LIS)的长度。eg:1, 5, 2, 4, 11, 7, 9其中的一些上升子序列为{1,5},{1,...原创 2020-04-13 08:51:55 · 212 阅读 · 0 评论