06 2019 档案
摘要:class Solution { public: bool canFinish(int numCourses, vector>& prerequisites) { //验证是否为DAG,每次验证指向的是否已经存在于当前图中 //建图 vector indegree(numCourses,0);//入度 ...
阅读全文
摘要:第一选择是将其转化成图用动态规划,但这样还是太麻烦 使用递归的思路,对于当前的节点root,分别求左右孩子到当前节点的单项路径权值最大的路径权值,然后记包含当前节点的路径权值为 path_price=root->val+left_gain+right_gain,取sum_max和他较大的; 返回左右
阅读全文
摘要:C++版 数组和字符串 正文 链表: 正文 树与图: 树: leetcode236. 二叉树的最近公共祖先 递归(先序) leetcode124二叉树最大路径和 递归 图: leetcode 547朋友圈(DFS,并查集) leetcode 207课程表(拓扑排序) leetcode 315 计算右
阅读全文
摘要:直接层序遍历,结果有部分测试样例超时; 究其原因,是因为距离计算每次都要调用函数过于复杂,由于两两单词间计算距离,并且计算距离时又需要对每个字母进行遍历,因此timeO(n^2*m) 改变距离的计算,对其做预处理,列出每个单词的状态,比如hog 可列为 *og,h*g,ho*;通过临接表来表示,即一
阅读全文
摘要:C++采用哈希表,时间复杂度O(n),空间复杂度O(n)空间复杂度应该可以降低;
阅读全文
摘要:与83类似,不过需要注意去除连续的重复片段的情况,如2 2 3 3这种情况,以及【1,1】这种情况下最终的cur为NULL,因此不能再令cur=cur->next;
阅读全文
摘要:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* ...
阅读全文
摘要:优先队列容器,使用小顶堆排序;timeO(nlogn) spaceO(n)
阅读全文
摘要:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode...
阅读全文
摘要:time O(n) spaceO(n) 的方法: 还是借助哈希表,所有字母初始化为0,将t中出现的所有字母次数全都记录在哈希表里; 采用双指针,分别为一个头指针head,和尾指针tail。flag记录当前[head,tail)没有出现的字母的个数; 1. flag不为0时,更改s[tail]的哈希值
阅读全文
摘要:1先利用符号栈转化为逆波兰表达式,并添加‘,’作为一个数字的结尾; 2然后利用数字栈计算逆波兰表达式的值;
阅读全文
摘要:time O(n) space O(1)
阅读全文
摘要:class Solution { public: vector> dirs={{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1},{-1,0},{-1,1}}; void gameOfLife(vector>& board) { //time O(2*9*m*n) int r=board.size(); ...
阅读全文
摘要:class Solution { public: int maxArea(vector& height) { //双指针法:从最宽的容器开始计算,当更窄的容器盛水量要大于之前容器,那必须比之前容器高,因此可以移动两个指针,直到最窄time O(n),space O(1); int low=0; int high=height.size...
阅读全文
摘要:class Solution { public: vector findClosestElements(vector& arr, int k, int x) { //查找,二分法找到那个数的lowerbound然后左右指针比较;O(logn+2k) vector::iterator p=lower_bound(arr.begin(),arr.end(...
阅读全文
摘要:采用一个哈希表存储两个数的和,再遍历另外两个数组的和,time O(n2) space O(n2)
阅读全文
摘要:class Solution { public: bool possibleBipartition(int N, vector>& dislikes) { //建一个图,找一个元素把所有敌对的元素染色-1,再对自己染色为1 vector> M(N+1,vector(N+1,0)); for(auto dis:dislikes){ ...
阅读全文
摘要:单调递减栈来做,time O(n),spaceO(n)需要一个哈希map
阅读全文
摘要:class Solution { public: vector productExceptSelf(vector& nums) { //用除法必须要考虑元素为0的情况,用双重循环要考虑数组过大超时的情况 //双指针双vector O(n)time O(n) space int n=nums.size(); vector...
阅读全文