LeetCode Exercise
文章平均质量分 54
邓小菜
要加油!成为优秀的人
展开
-
LeetCode Exercise 2: Remove Duplicates from Sorted Array
题名:Remove Duplicates from Sorted Array难度:Easy题目描述:Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length.Do not allocate e原创 2017-09-24 23:36:22 · 152 阅读 · 0 评论 -
LeetCode Exercise 13: Contains Duplicate III
题名:Contains Duplicate III难度:Medium题目描述:题目思路:这道题目乍一看很简单,可实际上涉及了时间复杂度和数据溢出问题。一开始尝试C++用两个简单的循环:在遍历整个vector的情况下,把每个元素与之其后的k个元素检测是否满足条件,结果显示超时。Java中的TreeSet结构很适合这道题,我们可以将一个TreeSet控制成一个大小为k的原创 2017-12-12 21:38:50 · 135 阅读 · 0 评论 -
LeetCode Exercise 14: Maximal Square
题名:Maximal Square难度:Medium题目描述:题目思路:这是一个动态规划问题,关键在于找到状态方程。题目要求最大面积area,由于是正方形,我们可以转为计算最大边maxsize,area = maxsize^2。矩阵从上往下遍历,可以知道一个点(i,j)往左上方可以形成的正方形大小取决于它周围的三个点:(i, j - 1),(i - 1, j),(i原创 2017-12-13 20:58:45 · 125 阅读 · 0 评论 -
LeetCode Exercise 15: Summary Ranges
题名:Summary Ranges难度:Medium题目描述:代码如下:class Solution {public: vector summaryRanges(vector& nums) { int n = nums.size(); vector ranges; if(n == 0){ retu原创 2017-12-24 22:35:51 · 139 阅读 · 0 评论 -
LeetCode Exercise 17:01 Matrix
题名:01矩阵,最近的0难度:Medium题目描述:代码如下:class Solution {public: vector> updateMatrix(vector>& A) { int r = A.size(), c = A[0].size(); vector> ans(r, vector(c)); queue> q; int D[原创 2018-01-12 17:55:06 · 132 阅读 · 0 评论 -
LeetCode Exercise 7: Group Anagrams
题名:Group Anagrams难度:Medium题目描述:题目分析:anagram:由颠倒字母顺序而构成的字,题意很容易懂,就是找出所有组成字母一样的字符串。但乍一看好像很麻烦的样子,如果把每一个string都与其它string对比再分类的话,时间复杂度很高。这些字符串有什么共同点呢?前面说了,它们的组成字母相同,如果可以将这些组成字母作为一个个的tag,来给这些字符串原创 2017-10-25 23:00:49 · 169 阅读 · 0 评论 -
LeetCode 794. Valid Tic-Tac-Toe State
题目描述:代码如下:class Solution {public: bool validTicTacToe(vector& board) { int x = 0, o = 0; //X与O的数目 for(int i = 0; i < 3; i++){ for(int j = 0; j < 3; j++){原创 2018-03-07 11:03:40 · 276 阅读 · 0 评论 -
LeetCode Exercise 16:证明NP完全问题
题号:8.14题目描述:中文释义:证明以下问题是NP完全问题:给出一个无向图 G = (V, E)和一个整数 k,返回一个大小为 k 的团和一个大小为 k 的独立集。解题思路: 这道题是证明NP完全问题,所描述的问题有 independent set 独立集问题和 clique 团问题。 根据书上所提供的以下搜索问题分类表格,我们可以得知原创 2017-12-31 21:59:52 · 1059 阅读 · 0 评论 -
LeetCode 795. Number of Subarrays with Bounded Maximum
题名:最大值有边界的子数组的数目难度:medium题目描述如下:代码如下:class Solution {public: int numSubarrayBoundedMax(vector& A, int L, int R) { int ans = 0, big = -1, end = -1; for(int i = 0; i < A.s原创 2018-03-08 21:03:49 · 219 阅读 · 0 评论 -
LeetCode Exercise 12:Minimum Size Subarray Sum
题名:Minimum Size Subarray Sum难度:Medium题目描述:代码如下:class Solution {public: int minSubArrayLen(int s, vector& nums) { int n = nums.size(), left = 0, right = 0; int su原创 2017-12-04 01:11:20 · 122 阅读 · 0 评论 -
LeetCode Exercise 11: Spiral Matrix
题名:Spiral Matrix难度:Medium题目描述:代码如下:class Solution {public: vector spiralOrder(vector>& matrix) { vector spiral; if(matrix.size() == 0 || matrix[0].size() == 0){原创 2017-11-20 22:12:03 · 165 阅读 · 0 评论 -
LeetCode Exercise 4: Next Permutation
题名:Next Permutation难度:medium题目描述:题目小解:两种情况:1.如果序列组成的已经是最大数字,就得出最小的数字组合,也就是从小到大排序;2.如果不是最大数字,则要求得到比当前排序大的“下一个”(最小的)排列。要考虑的主要是第二种情况,如何得到刚好的下一个大数?序列中的数字不会变多变少,牵一发而动全身。我们可以采用交换的方法,先确定高原创 2017-10-06 20:06:11 · 168 阅读 · 0 评论 -
LeetCode Exercise 3: Longest Substring Without Repeating Characters
题名:Longest Substring Without Repeating Characters(最长的无重复字符子串)难度:medium题目描述:个人体会:不是很了解为什么这道题目会是medium难度,因为没有时间复杂度的约束,这道题看起来中规中矩。我直接选择了简单粗暴的做法,变量maxLen存储最长子串长度,循环地以string中每一个字符为开头往后扩原创 2017-10-01 23:29:40 · 138 阅读 · 0 评论 -
Leetcode Exercise 1:Two Sum + Three Sum
应老师要求,题目选自LeetCode中的算法问题,作为《算法分析与设计》这门课程的weekly练习。原创 2017-09-07 10:37:19 · 291 阅读 · 0 评论 -
LeetCode Exercise 6: Remove Element
题名:Remove Element难度:Easy题目描述:代码如下:class Solution {public: int removeElement(vector& nums, int val) { int n = 0; for (int i = 0; i < nums.size(); i++) { if原创 2017-10-22 21:17:48 · 140 阅读 · 0 评论 -
LeetCode Exercise 5: Trapping Rain Water
题名:Next Permutation难度:Hard题目描述:个人体会:这是做的第一道hard题,感觉很有趣。刚开始一直想着要用“长乘以宽”的方法去解这道题,然后就发现出了很多问题。后来思考过“填充”的方法,但是一直没有合理清晰的思路,于是最后我去看了下别人的思路和解法(捂脸),发现真的很多问题都可以尝试去左右同时推进的方法。别人的解法:采用左右两边推进原创 2017-10-15 22:28:30 · 141 阅读 · 0 评论 -
LeetCode Exercise 8: Remove Nth Node From End of List
题名:Remove Nth Node From End of List难度:Medium题目描述:题目分析:如果不要求遍历次数是很简单的,可以遍历一次得到链表长度L,然后再一次遍历删除第L-n+1个节点。现在我们考虑如何一次遍历删除倒数第n个节点。我们可以使用两个指针:begin和end,两个指针之间隔开n的距离。(这样如果end是尾节点,那么begin指向的就是目标节点的原创 2017-11-02 22:17:45 · 136 阅读 · 0 评论 -
LeetCode Exercise 9: Minimum Path Sum
题名:Minimum Path Sum难度:Medium题目描述:分析思路: 从左上角到右下角找“最短路径”,并且题目也提示说:每次只能下移或者右移,这无疑简化了思路,令sum[i][j]代表到点grid[i][j]的最短路径,我们可以得出这样一个推导式:sum[i][j] = min(sum[i-1][j], sum[i][j-1]) + grid原创 2017-11-13 16:45:38 · 201 阅读 · 0 评论 -
LeetCode Exercise 10: Merge Intervals
题名:Merge Intervals难度:Medium题目描述:代码如下:/** * Definition for an interval. * struct Interval { * int start; * int end; * Interval() : start(0), end(0) {} * Interval(int原创 2017-11-19 23:30:17 · 130 阅读 · 0 评论 -
LeetCode 792. Number of Matching Subsequences
题名:匹配子序列的数量难度:medium题目描述如下:题目分析: 该题要求在一堆words里面找出是字符串S子序列的字符串数目,如果简单地在遍历S的基础上,再遍历words里的每个字符串则会导致超时。我们可以“跟踪”words中每个字符串的“进度”: vector > v[128],pair的first代表words第几个字符串,second则表示该字符串目前期原创 2018-03-09 20:27:06 · 434 阅读 · 0 评论