---恢复内容开始---

2018.3.16目前已刷27题,打卡记录有意思的题目。

leetcode78 subsets 思路1:DFS遍历子集,每遇到一个数就把该数加上原来的子集变成新的子集。

class Solution {
private:
void DFS(int index,vector<int> t,vector<int>& nums,vector<vector<int>> & res){
res.push_back(t);
for(int i = index;i<nums.size();i++){
t.push_back(nums[i]);
DFS(i+,t,nums,res);
t.pop_back();
}
} public:
vector<vector<int>> subsets(vector<int>& nums) {
vector<vector<int>> res;
vector<int> t;
DFS(,t,nums,res);
return res;
}
};

思路2:采用位运算,是否取某个数组成子集视为0101的序列。

236  求二叉树的最低公共祖先

思路1:求出根节点到所求节点的路径,最后求两个路径的最后一个公共节点

class Solution {
//pNode是要打印的节点,pRoot是工作指针
bool getNodePath(TreeNode* pRoot,TreeNode * pNode,vector<TreeNode*> &path){
if(!pRoot) return false;
path.push_back(pRoot);
if(pRoot==pNode) return true;
bool found=false;
if(pRoot->left) found=getNodePath(pRoot->left,pNode,path);
if(!found&&pRoot->right) found=getNodePath(pRoot->right,pNode,path);
if(!found) path.pop_back();
return found; }
TreeNode* getLastCommonNode(const vector<TreeNode*> &pPath,const vector<TreeNode*> &qPath){
TreeNode* res;
vector<TreeNode*>::const_iterator iteratorP = pPath.begin();
vector<TreeNode*>::const_iterator iteratorQ = qPath.begin();
while(iteratorP != pPath.end() && iteratorQ != qPath.end()){
if(*iteratorP == *iteratorQ) res=*iteratorP;
iteratorP++;
iteratorQ++;
}
return res;
}
public:
TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
vector<TreeNode*> pPath,qPath;
if(!root || !p || !q) return nullptr;
getNodePath(root,p,pPath);
getNodePath(root,q,qPath);
return getLastCommonNode(pPath,qPath);
}
};

思路2:先序遍历

 class Solution {
public:
TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
if (root == NULL || root == p || root == q) return root;
//如果没有匹配到节点 就会返回null
//但凡匹配到任何一个节点,都不会返回null;
TreeNode* left = lowestCommonAncestor(root->left, p, q);
TreeNode* right = lowestCommonAncestor(root->right, p, q);
//如果左边,右边都找到了节点,那就是最近的公共祖先
if (left && right)
return root;
return left == NULL ? right : left;
}
};

leetcode690,题目虽然简单,但是因为某个变量没有初始化为0,导致相同的测试用例和代码在本地执行与提交代码跑出来结果不同。这个低级错误真是让人脸红啊~~

leetcode300 最长不上升子序列

方法一:动态规划算法。状态转移方程   dp[i]=max{1,dp[j]+1}  (j=1,2,...,i-1 && A[j]<A[i])

class Solution {
public:
int lengthOfLIS(vector<int>& nums) {
if(nums.empty()) return ;
int maxLen=;
vector<int> dp= vector<int>(nums.size(), );
for(int i=;i<nums.size();i++){
for(int j=;j<i;j++){
if(nums[i]>nums[j] && dp[i]<dp[j]+)
dp[i]=dp[j]+;
}
maxLen=dp[i]>maxLen?dp[i]:maxLen;
}
return maxLen;
}
};

方法二:

leetcode 78,236,300的更多相关文章

  1. LeetCode 78,面试常用小技巧,通过二进制获得所有子集

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是LeetCode专题第47篇文章,我们一起来看下LeetCode的第78题Subsets(子集). 这题的官方难度是Medium,点赞 ...

  2. [Leetcode 78]求子集 Subset

    [题目] Given a set of distinct integers, nums, return all possible subsets (the power set). Note: The ...

  3. Leetcode 78题-子集

    LeetCode 78 网上已经又很多解这题的博客了,在这只是我自己的解题思路和自己的代码: 先贴上原题: 我的思路: 我做题的喜欢在本子或别处做写几个示例,以此来总结规律:下图就是我从空数组到数组长 ...

  4. 在vscode中配置LeetCode插件,从此愉快地刷题

    大家好,今早在B站看到up主的vscode里藏了leetcode插件,这才知道原来还有这款神器.但是没想到在用的时候遇到了一些麻烦,花了一点时间才解决.所以写这篇文章除了给大家安利这个好用的插件之外, ...

  5. LeetCode 81,在不满足二分的数组内使用二分法 II

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是LeetCode专题第50篇文章,我们来聊聊LeetCode中的81题Search in Rotated Sorted ArrayII ...

  6. LeetCode 二叉树,两个子节点的最近的公共父节点

    LeetCode 二叉树,两个子节点的最近的公共父节点 二叉树 Lowest Common Ancestor of a Binary Tree 二叉树的最近公共父亲节点 https://leetcod ...

  7. [LeetCode] 78. Subsets 子集合

    Given a set of distinct integers, S, return all possible subsets. Note: Elements in a subset must be ...

  8. LeetCode 78. 子集(Subsets) 34

    78. 子集 78. Subsets 题目描述 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集). 说明: 解集不能包含重复的子集. 每日一算法2019/6/6Day 34L ...

  9. [转]通过Mesos、Docker和Go,使用300行代码创建一个分布式系统

    http://www.csdn.net/article/2015-07-31/2825348 [编者按]时下,对于大部分IT玩家来说,Docker和Mesos都是熟悉和陌生的:熟悉在于这两个词无疑已成 ...

随机推荐

  1. ARM Mcp2515添加驱动

    Mcp2515添加驱动   2012-01-10 21:39:32 上图1: 上图2: 上图3: 之前完成了spi接口驱动,所以mcp2515也是通过spi来读写数据的.就是多加一个中断脚. 另外在2 ...

  2. 关于linux系统CPU篇--->平均负载

    1.什么是平均负载?(load average) 平均负载是指单位时间内平均活跃进程数,包括可运行状态的进程数,以及不可中断状态的进程(如等待IO,等待硬件设备响应) 2.如何查看平均负载? 使用to ...

  3. MariaDB xtrabackup物理备份与还原

    xtrabackup物理备份 1.1 安装xtraback 安装依赖: [root@localhost ~]# yum install -y perl-DBD-MySQL perl-DBI perl- ...

  4. Python爬虫与一汽项目【综述】

    项目来源 这个爬虫项目是 去年实验室去一汽后的第一个项目(基本交工,现在处于更新维护阶段).内容大概是,获取到全国31个省份政府的关于汽车的招标公告,再用图形界面的方式展示爬虫内容.在完成政府招标采购 ...

  5. postman的几个问题

    最近使用postman写了几个web接口测试用例,工具使用比较简单,大概步骤如下: 1.new collections——>建文件夹,类似建一个测试合集,用于方便整理,例如可以把同一个接口各种参 ...

  6. 【MySQL】InnoDB 内存管理机制 --- Buffer Pool

    InnoDB Buffer Pool 是一块连续的内存,用来存储访问过的数据页面 innodb_buffer_pool_size 参数用来定义 innodb 的 buffer pool 的大小 是 M ...

  7. luogu P4482 [BJWC2018] Border 的四种求法 - 后缀数组

    题目传送门 传送门 题目大意 区间border. 照着金策讲稿做. Code /** * luogu * Problem#P4482 * Accepted * Time: 8264ms * Memor ...

  8. BZOJ 5261 Rhyme

    思路 考虑一个匹配的过程,当一个节点x向后拼接一个c的时候,为了满足题目条件的限制,应该向suflink中最深的len[x]+1>=k的节点转移(保证该后缀拼上一个c之后,长度为k的子串依然属于 ...

  9. 实验9-1 编写一个存储过程proc_test_func

    在TestDB数据库中,编写一个存储过程proc_test_func,要求如下: 1)输入参数 一个整型的输入参数 @value 2)要求在一个select语句返回: @value的绝对值, 此绝对值 ...

  10. 剑指offer:链表中倒数第k个结点

    问题描述 输入一个链表,输出该链表中倒数第k个结点. 解题思路 两个指针都指向头结点,第一个指针先移动k-1个结点,之后两指针同时移动,当第一个指针到链表尾的时候,第二个指针刚好指向倒数第k个结点. ...