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

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. 【转载】pycharm破解,可使用到2099年.pycharm版本 pycharm-professional-2016.3.1

    1. Pycharm的安装方法,论坛很多,这里就不赘述了.参照:http://blog.csdn.net/qq_29883591/article/details/52664478 2. 下载Pycha ...

  2. Linux基础命令---free显示内存使用

    free free指令用来显示内存的使用情况,显示系统中可用和已使用的物理和交换内存的总量,以及内核使用的缓冲区.应该忽略共享内存列:它已经过时了. 此命令的适用范围:RedHat.RHEL.Ubun ...

  3. 选择排序java实现

    package text.algorithm; /** * 选择排序 * O(n^2);空间复杂度O(1); */public class SelectionSort { public static ...

  4. 初步了解,vue的转发机制(proxyTable)

    vue的转发机制(proxyTable),proxyTable代理功能可以实现转发机制,需要修改config里面修改index.js文件 修改index.vue中请求的代码(该功能是webpack-s ...

  5. Web 前端编程运维必备

    Html 1.Html 标签初知 2.Html 标签种类 3.Html 符号 4.Html Title 标签 5.Html meta 标签 6.Html Link 标签 7.Html p 标签 8.H ...

  6. 后端必备的Linux知识

    目录 从认识操作系统开始 操作系统简介 操作系统简单分类 初探Linux Linux简介 Linux诞生简介 Linux的分类 Linux文件系统概览 Linux文件系统简介 文件类型与目录结构 Li ...

  7. Scrum Meeting 合集

    一.Alpha [Alpha]Scrum meeting 1 [Alpha]Scrum meeting 2 [Alpha]Scrum meeting 3 [Alpha]Scrum meeting 4 ...

  8. JSP页面静态包含和动态包含的区别与联系

    ---恢复内容开始--- JSP页面静态包含和动态包含的区别与联系: 1.<%@ include file=" " %> 是指令元素,<jsp:include p ...

  9. go 笔记

    Go 语言的变量声明格式为: var 变量名 变量类型 返回类型. 匿名变量不占用命名空间,不会分配内存.匿名变量与匿名变量之间也不会因为多次声明而无法使用. func GetData() (int, ...

  10. EF的优缺点

    优点: 1.简洁的Linq to Sql语句大大提高了开发人员的效率,不要再写复杂的sql语句: 2.不再需要再管应用程序如何去连接数据库: 3.EF可以用作用于数据服务和OData Service的 ...