leetcode
文章平均质量分 62
Herbzhou
立志成为好的博主,坚持博客
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
leetcode32,最长有效括号
https://leetcode-cn.com/problems/longest-valid-parentheses/这题用动态规划,但是那个递归公式才是最难的。先定义dp[i]的含义:以第i个字符为尾的最长有效括号的长度。题解中分了两种情况:1. 倒数第二个为(,即..........(),这种情况,dp[i]=dp[i-2]+2;简单想一下,倒数第一能和其他的( 匹配吗,显然不能,否则倒数第二个匹配个寂寞啊。2. 倒数第二个为 ),即 .....(.....)),对于这周..原创 2020-08-19 20:43:23 · 1148 阅读 · 0 评论 -
leetcode377与leetcode518
这两题其实很相似,即第377题去重之后就成了518的答案。查看二者的代码也是及其相似:这种小而精的问题值得好好琢磨总结。//leetcode377 public int combinationSum4(int[] coins, int amount) { int[]dp=new int[amount+1]; dp[0]=1; Arrays.sort(coins); for(int x=1;x<=amount;x++){原创 2020-07-27 11:12:39 · 226 阅读 · 0 评论 -
154. 寻找旋转排序数组中的最小值 II-------------为啥用右边界而不用左边界
我花了挺长时间用左边界来做,最后发现总是有几个测试用例过不了,刚好评论里也有关于这个点困惑,我就从理论上思考了这个问题。当然,这里可以引申成寻找最大值,那么思考一下分别用左右边界做判断的写法。这里用左边界更好,但是右边界也可以做。右边界的话可以考虑依然使用原来的方法,只需要最后返回nums[(left-1+nums.length)%nums.length] ,因为有可能最小值是第一个。-----其实提一下,这个用到了求出来的最小值的特性,该最小值是最左边的最小值,所以最小值的左边或者数组最后..原创 2020-07-06 13:47:30 · 289 阅读 · 0 评论 -
合并区间
3板斧先排序:根据左边界排序,相等的话再排右边界。前后两个区间,一共3种情况:原创 2020-07-04 22:12:00 · 229 阅读 · 0 评论 -
leetcode 4数之和
关键词:去重,双指针。这题的题解在leetcode很多,这里并不赘述,只是证明下为什么那样可以去重:也就是为什么要很多个类似的这一步;首先,从语义上讨论,我们比较一个数和它之前的数是不是相同,那么就遍历数组而言,第一个数是没有前一个数的for(int i=0;i<nums.length;i++){ if(nums[i]==nums[i-1] //很明显,从语义上就不对,我们第一个元素是没有上一个元素的。 System.out.println(i);.原创 2020-06-23 12:25:13 · 199 阅读 · 0 评论 -
动态规划和回溯法的异同
一:举例回溯法典型的题目有:八皇后问题,老鼠走迷宫问题.(老鼠问题)动态规划典型题目有:最长公共子序列问题,还有滑雪路径问题(滑雪路径)这些都是我做过的几道题,对两种算法有点感悟,所以写出自己的第一个博客。(算是转载吧,自己写一点分析而已)二:以老鼠走迷宫问题和最长滑雪路径问题为例来分析两种算法,因为在做最长滑雪路径问题时,我立刻想到了老鼠走迷宫这个问题,也说明了他们的相同之处,但...原创 2017-09-18 20:00:52 · 8418 阅读 · 1 评论 -
leetcode滑动窗口题集
滑动窗口是一类题目,虽然其中有的题目可以有其他的或者更简单的解法,但是作为一个通用解法,我们在有限的时间里还是可以用的,具体在leetcode中有几题,有人已经总结了,而且说的很好leetcode滑动窗口解决我这几题都是用java来写的,在用java写的过程中呢,遇到一些问题,比如非常容易忽视的问题,Integer类型的,要用equals方法比较大小,否则当数值大于127的时候会出错。...原创 2019-12-10 14:02:09 · 292 阅读 · 0 评论 -
leetcode 76. Minimum Window Substring ,java版解答
Integer 在大于127 的时候 不从常量池里拿,是个对象,所以换成equals。。。就这个问题,花了我几个小时,最后评论区看到了该问题的解答。。。class Solution { public List<Integer> findAnagrams(String s, String p) { int left =0; int...原创 2019-12-09 19:26:49 · 160 阅读 · 0 评论 -
leetcode 两数相加
这题呢,有点小坑。你试试result这个节点存储有效数据就知道我所说的坑点了。 public ListNode addTwoNumbers(ListNode l1, ListNode l2) { int flag=0; ListNode node1=l1; ListNode node2=l2; ListNode re...原创 2019-11-16 19:49:31 · 106 阅读 · 0 评论 -
leetcode 97 交错字符串
1-----这里不要认为交错字符串有什么特别的顺序要求,如果我们一个字符一个字符的处理,那么就不用管是不是交错字符串了啊 public boolean isInterleave(String s1, String s2, String s3) { if(s1.length()+s2.length()!=s3.length()) return fa...原创 2019-08-23 00:51:01 · 212 阅读 · 0 评论 -
leetcode 287 寻找重复数
一个方法必定是可以用数学证明的,我看题解只能看懂思想,但是为什么会这样,我想可能会有人和我一样有困惑,所以我这里用数学证明了这个方法的正确性。光想不如动手证明啊。我们先定义几个变量,从A点到B点的距离为m,以B点为入口的环长度为n;题解中示意:快指针fast 以2为速度移动,而慢指针slow以1为速度移动。1. 当slow第一次到达B点时,Distance(slow)=m,Di...原创 2019-09-04 21:00:23 · 141 阅读 · 0 评论 -
leetcode 334递增的三元子序列
喜欢水题hhhclass Solution {public:bool increasingTriplet(vector<int>& nums) { int n = nums.size(); if(n<3) return false; vector<int>Min(n); int Max = nums[n - ...原创 2019-09-03 21:35:09 · 147 阅读 · 0 评论 -
leetcode 300 最长上升子序列
思想真的很nb,二分法是锦上添花。。很难想到吧,建议这题看题解中浏览量最高的那个class Solution {public:void insert(int num, vector<int>&nums) { int left = 0; int right = nums.size() - 1; int mid = 0; while (left < rig...原创 2019-09-03 21:14:49 · 120 阅读 · 0 评论 -
leetcode 413 等差数列划分
来水一题class Solution {public:int numberOfArithmeticSlices(vector<int>& A) { if (A.size() < 3) return 0; int counts=0; vector<bool>visited(A.size(), false); for (int i = ...原创 2019-08-31 21:44:05 · 152 阅读 · 0 评论 -
leetcode 403 青蛙过河
我不知道我的方法为啥会超时,然后照着官方题解写了一通hhh,再埋个坑吧class Solution {public:void can_Cross(vector<int>&stones, int current, map<int, set<int>>&mymap) { for (set<int>::iterator it...原创 2019-08-31 17:50:05 · 369 阅读 · 0 评论 -
leetcode321 拼接最大数
这题挺坑的,我还没填完坑#include <iostream>#include<stdlib.h>#include<string>#include<vector>#include<math.h>typedef long long ll;using namespace std;ll maxNumber2(vector...原创 2019-08-31 14:18:29 · 249 阅读 · 0 评论 -
leetcode 291
阻击回溯法。。。#include <iostream>#include<stdlib.h>#include<string>#include<vector>#include<set>#include<math.h>#include<map>#include<unordered_map>...原创 2019-08-13 11:06:55 · 298 阅读 · 0 评论 -
leetcode 72编辑距离
想到动态规划是第一步,其次hhh。递推式怎么来的???先看官方解释:dp[i][j]表示str1前i个字符与str2前j个字符匹配所需的最少次数;str1="horse",str2="ros"当我们知道dp[i][j],dp[i+1][j],dp[i][j+1]后就可以分两种情况来讨论了;1---当str1[i+1]=str2[j+1]时,就等于给的例子中,匹配hors和ros...原创 2019-08-19 16:34:57 · 149 阅读 · 0 评论 -
leetcode 85最大矩形
我能想到的dp算法:dp[i][j]表示包含第i行第j列的元素往上走的连续的1的个数;这是可以递推的ifdp[i][j]=v[i][j]==0?0:dp[i-1][j]+1(i>=1);对于dp中的每行遍历可以计算出结果;目测空间复杂度为o(n)(可以用1个一维数组代替)和时间复杂度o(n*n)。。优快云真是神仙排版,还是我打开的方式不对??很惨烈的结果hhhhh 觉...原创 2019-08-19 22:20:39 · 121 阅读 · 0 评论 -
leetcode211
#include <iostream>#include<stdlib.h>#include<string>#include<vector>typedef long long ll;using namespace std;vector<string> wordlist;vector<vector<string...原创 2019-08-15 11:58:26 · 195 阅读 · 0 评论 -
leetcode 140
#include <iostream>#include<stdlib.h>#include<string>#include<vector>#include<algorithm>using namespace std;string str = "catsanddog";vector<string> wordli...原创 2019-08-15 09:29:49 · 156 阅读 · 0 评论 -
leetcode126
#include <iostream>#include<stdlib.h>#include<string>#include<vector>using namespace std;vector<string> wordlist= { "hot","dot","dog","lot","log","cog" };vector&l...原创 2019-08-15 09:08:22 · 257 阅读 · 0 评论 -
leetcode-691
#include <iostream>#include<stdlib.h>#include<string>#include<vector>using namespace std;vector<string> stickers = { "notice", "possible" }; //{ "with", "example",...原创 2019-08-14 22:39:32 · 248 阅读 · 0 评论 -
leetcode 980
#include <iostream>#include<stdlib.h>#include<string>#include<vector>#include<set>#include<math.h>#include<map>#include<unordered_map>#include&...原创 2019-08-14 19:40:24 · 290 阅读 · 0 评论 -
leetcode1088
这里用到了sstream库中的stringstream类。#include <iostream>#include<stdlib.h>#include<string>#include<vector>#include<set>#include<math.h>#include<map>#includ...原创 2019-08-14 16:58:26 · 414 阅读 · 0 评论 -
leetcode 1066 要啥自行车
阻击回溯法#include <iostream>#include<stdlib.h>#include<string>#include<vector>#include<set>#include<math.h>#include<map>#include<unordered_map>#...原创 2019-08-13 11:55:45 · 620 阅读 · 0 评论 -
leetcode 5 最长回文子串
思路:我们考虑一个子串s,如果s不是个回文串,那么就不用考虑在a+s+a是不是回文串了,直接break;另一个要注意的点是:起始中心子串有两种长度:1个或者2个---------------看了leetcode官方题解,这个应该是中心扩展法。class Solution {public:string longestPalindrome(string s) { int N = s...原创 2019-08-18 16:44:37 · 130 阅读 · 0 评论 -
leetcode 996
其实就是全排列(数字可重复,参见leetcode46,47)+一点限制条件(完全平方数)#include <iostream>#include<stdlib.h>#include<string>#include<vector>#include<set>#include<math.h>#include<...原创 2019-08-13 09:57:35 · 232 阅读 · 0 评论 -
leetcode 140.单词拆分
#include <iostream>#include<stdlib.h>#include<string>#include<vector>#include<set>#include<math.h>#include<map>#include<unordered_map>#include&...原创 2019-08-12 11:00:08 · 120 阅读 · 0 评论 -
leetcode46,47
46题的解答#include <iostream>#include<stdlib.h>#include<string>#include<vector>#include<set>#include<math.h>#include<map>#include<unordered_map>...原创 2019-08-11 17:26:41 · 116 阅读 · 0 评论 -
leetcode 208 前缀树
官方有代码示例-----以空间换时间一个NB的数据结构-----它的基本操作可以构建出很强大的算法,所以看完整个代码,最重要的是回过来看看TrieNode是怎么设计的,有哪些属性和方法。class TrieNode { // R links to node children private TrieNode[] links; private final int...转载 2019-08-15 14:43:01 · 134 阅读 · 0 评论 -
leetcode44 ---通配符匹配----DP
超时解法:::疯狂重复计算bool isMatch(string s, string p) { if (p.empty()) return s.empty(); if (s.empty()) { for (int i = 0; i < p.length(); i++) if (p[i] != '*') return false; return true;...原创 2019-08-17 19:31:24 · 173 阅读 · 0 评论 -
leetcode 10--正则表达式匹配
分析错误在什么地方也是非常好的熟悉算法的过程,尤其是一些很难发现的小细节。。分类:举个例子,比如把人进行分类你非得分成0岁的,1岁的。。。。100岁的,有时候程序给个108岁的你就认为不对;分成男人和女人不就好了,分类的标准要简单--不要太多分支,其次要保证考虑到所有的情形,保证健壮性。错误解答: bool isMatch(string s, string p) {...原创 2019-08-17 17:24:24 · 124 阅读 · 0 评论 -
leetcode25---k组翻转链表
这题可以参考206的答案,事实上,我直接把翻转部分的代码用了leetcode206官方题解上面的,只是做了一点小修改,以保证是前K个反转;我们具体分析核心函数 reverseKGroup;一个关键是怎么把这个问题分解成好几个单独的翻转问题,我这里的reverseList函数做了改动,只反转前面K个节点,注意这个函数返回的是头结点,比如我反转 1->2->3 得到3->...原创 2019-08-22 15:18:00 · 127 阅读 · 0 评论 -
leetcode 53---最大子序和
class Solution {public:int maxSubArray(vector<int>& nums) { int minsum = nums[0]; int maxsum = nums[0];//记录到目前为止最大和最小的和 int maxsubsum = nums[0]; int sum = nums[0]; for (int i = 1;...原创 2019-08-18 14:19:43 · 116 阅读 · 0 评论
分享