![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode
Boyce_L
这个作者很懒,什么都没留下…
展开
-
leetcode312. Burst Balloons
题目链接 leetcode 312 Burst Ball难度等级:hard思路总体思路就是利用动规和分治的思想。要注意到一点,对于arr[0 ... (n - 1)], 若arr[i]是最后一个取出的元素,则arr[0 ... (i - 1)] 和 arr[ (i + 1) ... (n - 1)]是两个互补干扰的子部分,所以可以利用将大数组拆分成两部分,然后递归求解。则 max_sum(arr[原创 2017-09-11 18:25:35 · 227 阅读 · 0 评论 -
NP证明题《算法概论》第八章
题目 : 练习题8.3证明: 首先,因为String SAT的解可以在多项式时间内验证,所以属于NP问题, 另外, 可以将SAT归约到STRING SAT(将k设置成总个数), 所以STRING SAT是NP完全问题原创 2018-01-11 21:31:08 · 468 阅读 · 0 评论 -
leetcode 516. Longest Palindromic Subsequence
题目链接 516. Longest Palindromic Subsequence等级: medium思路动态规划, df[i][j]表示 s[i … j] 的最长回文字串长度 df[i][j] = max(df[i + 1][j], df[i][j - 1], df[i + 1][j - 1] + 2), if s[i] == s[j]; df[i][j] = max(df[i + 1][j]原创 2017-12-17 23:06:59 · 166 阅读 · 0 评论 -
leetcode 688. Knight Probability in Chessboard
题目688. Knight Probability in Chessboard 等级: hard思路使用动态规划,对于N*N的方格,外围扩展两层,变成(N+4)(N + 4), 对于外围的两层, df[][][] = 0; df[i][j][k] = sum(df[i + di][j + dj][k - 1])/8.0实现# include <iostream># include <vecto原创 2017-12-17 21:53:41 · 397 阅读 · 0 评论 -
leetcode 698. Partition to K Equal Sum Subsets
题目链接:698. Partition to K Equal Sum Subsets 等级: medium思路直接使用dfs深搜,深搜过程中,记录以及匹配完全的子集合个数,以及深搜当前状态下的和等实现# include <iostream># include <vector>using namespace std;/*Given an array of integers nums and a原创 2017-12-17 15:46:40 · 290 阅读 · 0 评论 -
leetcode 452. Minimum Number of Arrows to Burst Balloons
题目452. Minimum Number of Arrows to Burst Balloons 等级: medium 标签:贪心思路对pair,以第一个元素为第一排序准则,第二个元素为次要准则排序。 然后从小到大扫描,寻找连续的有交叠部分的pair,然后销毁,计数加一,继续此操作至尾部,计数结果即为答案实现# include <iostream># include <Vector>#原创 2017-12-22 21:49:57 · 285 阅读 · 0 评论 -
leetcode 406. Queue Reconstruction by Height
题目406. Queue Reconstruction by Height等级:medium 标签:贪心思路现对people数组基于pair的第一个元素(身高)排序,身高从小到大,逐一将people[i]放到结果vector的合适位置,放置方法是,对于结果vector,从左往右跳过people[i].second个有效位置(即还未放置pair的位置,或该位置已经放置了一个pair, 但是pair.原创 2017-12-21 00:38:33 · 254 阅读 · 0 评论 -
leetcode 122. Best Time to Buy and Sell Stock II
题目122. Best Time to Buy and Sell Stock II 标签: 贪心思路找到除了第一个点的所有峰值,然后,对于每一个峰值,减去与前一个峰值(包括第一个点,如果它也是峰值的话)之间的山谷值得到差值,将所有的差值加起来就是最大收益实现# include <iostream># include <vector>using namespace std;class Solut原创 2017-12-20 13:58:44 · 185 阅读 · 0 评论 -
leetcode 455. Assign Cookies
题目455. Assign Cookies 等级: easy 标签: 贪心思路对g数组和s数组从小到大排序,然后开始从左到右扫描,找到满足当前的s元素大于等于当前g元素时候,个数加一实现# include <iostream># include <vector># include <algorithm>using namespace std;class Solution {public:原创 2017-12-20 12:55:11 · 211 阅读 · 0 评论 -
leetcode 64. Minimum Path Sum
64. Minimum Path Sum等级: medium 标签: 动态规划思路使用dp[i][j]表示从grid[i][j]到grid[m][n]的最小cost dp[i][j]=⎧⎩⎨⎪⎪⎪⎪⎪⎪grid[i][j]grid[i][j]+dp[i+1][j]grid[i][j]+dp[i][j+1]min{grid[i][j]+dp[i+1][j],grid[i][j]+dp[i][j+1原创 2017-11-17 18:28:09 · 202 阅读 · 0 评论 -
leetcode 718. Maximum Length of Repeated Subarray
题目718. Maximum Length of Repeated Subarray 等级:medium 标签: 动态规划思路类似LCS(最长公共字串)的处理方法。使用动态规划 定义dp[i][j] 表示以X[i]和Y[j]作为匹配的最长子数组的最后一个元素的长度,注意,这里X,Y所以都是从1开始,也就是dp[0][*] 表示第一个子数组是空串。时间复杂度为O(n)dp[i][j]=⎧⎩⎨0d原创 2017-11-17 17:40:27 · 300 阅读 · 0 评论 -
leetcode315. Count of Smaller Numbers After Self
题目leetcode315. Count of Smaller Numbers After Self 难度等级: hard思路首先最暴力的方法,就是二重循环遍历a[0 … (n - 1)]。对于每个a[i], 找到a[(i + 1) … (n - 1)]中比a[i]小的数的的个数。时间复杂度是n平方。优化的一个角度是,能不能地在a[(i + 1) … (n - 1)]中找到比a[i]小的数的的个数原创 2017-09-21 13:29:15 · 348 阅读 · 0 评论 -
leetcode493. Reverse Pairs
题目链接leetcode493. Reverse Pairs 难度等级:hard思路这道题很明显是一般逆序对的变形,我们同样可以使用归并排序来解决。对于已经排序的 a[1 ... n] 和 b[1 ... m]归并。我们在归并的同时,统计满足题目要求的逆序对的个数,如果存在 a[i] > 2*b[j],就此有j对逆序对(a[i], b[j])、(a[i], b[j - 1])、(a[i], b[原创 2017-09-21 13:00:04 · 549 阅读 · 0 评论 -
leetcode4. Median of Two Sorted Arrays
题目链接leetcode4. Median of Two Sorted Arrays 难度等级:hard思路首先要观察到, a[0 … (n - 1)] 和 b[0 … (m - 1)], 对于 0<= i <= (n - 1), 0 <= j <= (m - 1) min_one = min(a[i], b[j]), 则, min_one在a和b数组的合集的升序的索性值 index <= i原创 2017-09-12 22:22:43 · 208 阅读 · 0 评论 -
二分查找的几种不同的实现
不多说,直接上代码,注释解释清楚了# include <iostream># include <vector># include <cstring># include <string># include <sstream># include <istream>using namespace std;//////////////////////////////////////////////原创 2017-09-11 21:10:39 · 327 阅读 · 0 评论 -
leetcode240. Search a 2D Matrix II
题目leetcode240. Search a 2D Matrix II 难度等级:medium思路实现对每一行的二分查找,和每一列的二分查找就可以了 时间复杂度 O(mlgn)O(mlgn)实现class Solution {public: bool bin(vector<vector<int>>& matrix, int axis, int index, int l, int r原创 2017-09-11 21:07:03 · 247 阅读 · 0 评论 -
leetcode169. Majority Element
题目leetcode169. Majority Element 难度等级:easy思路由于majority member 出现次数大于总数一半,实际上就是求数组的中位数。最简单的思路,就是先排序,然后二分查找到中位数。但其实,可以直接利用快排算法的partition函数,就可以把中位数找出来。具体的做法就是,分块,但分块的中间元素index 等于 中位数的index时,结束。这样,时间复杂度虽然和原创 2017-09-11 20:57:47 · 234 阅读 · 0 评论 -
leetcode23 Merge k Sorted Lists
题目leetcode23 Merge k Sorted Lists思路就是多路归并,注意判断某一路为空时候的处理就可以了实现class Solution {public: ListNode* mergeKLists(vector<ListNode*>& lists) { int k = lists.size(); if(k == 0) return NULL;原创 2017-09-11 20:48:49 · 325 阅读 · 0 评论 -
leetcode 647. Palindromic Substrings
题目连接 leetcode 647. Palindromic Substrings实现class Solution {public: int countSubstrings(string s) { int size = s.size(); vectorvectorint> > dp(size, vectorint>(size, 0)); i原创 2018-01-21 02:49:15 · 210 阅读 · 0 评论