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

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. php 图片添加文字,水印

    因为工作需求,用到这个,网上找了很多,也没有找到好的方式,最后找到这种感觉比较简单的方式,记录下来,以备后用.   $im = imagecreatefrompng("img/yyk_bg. ...

  2. docker组件介绍

    一.Docker Client and Daemon(docker egine docker 引擎) docker是一个客户端工具,作用是发送 用户的请求给 dockerd 安装路径: /usr/bi ...

  3. 【数据下载】利用wget命令批量下载ftp文件和文件夹

    这是一个“”数据大发现”的时代,大家都在创造数据,使用数据以及分享数据,首先一步我们就需要从数据库download我们需要的数据. Ftp是一种常见的在线数据库,今天介绍一种可以批量下载文件夹的方法, ...

  4. 神经机器翻译 - NEURAL MACHINE TRANSLATION BY JOINTLY LEARNING TO ALIGN AND TRANSLATE

    论文:NEURAL MACHINE TRANSLATION BY JOINTLY LEARNING TO ALIGN AND TRANSLATE 综述 背景及问题 背景: 翻译: 翻译模型学习条件分布 ...

  5. python:threading.Thread类的使用详解

    Python Thread类表示在单独的控制线程中运行的活动.有两种方法可以指定这种活动: 1.给构造函数传递回调对象 mthread=threading.Thread(target=xxxx,arg ...

  6. CS 2505 Computer Organization I C09: Rational Number

    CS 2505 Computer Organization I C09: Rational Number Type in CVersion 5.00 This is a purely individu ...

  7. rsync+sersync实现代码同步

    APP02安装 rsync服务端 yum install rsync vim /etc/rsyncd.conf pid file=/var/rsynclog/rsyncd.pid log file=/ ...

  8. centos设置网卡开机自启动

    1.进入目录/etc/sysconfig/network-scripts/2.修改ifcfg-enxxxxxxxx 文件   (即你的网卡标识命名的配置文件)3. 将ONBOOT=no改成yes4. ...

  9. 纯CSS3完成选项卡,不要js完成的选项卡

    我爱撸码,撸码使我感到快乐!大家好,我是Counter.今天就来敲一敲,选项卡,注意哦,不是一般利用js完成的选项卡,今天是纯用HTML和CSS来完成的,这怎么可能?那你不用js的点击事件,怎么处理? ...

  10. 【使用指南】ComponentOne Enterprise .NET开发控件集

    为方便广大 .NET开发人员更好的使用 ComponentOne Enterprise .NET开发控件集,葡萄城专门推出了 ComponentOne Enterprise 使用指南,该指南详细地介绍 ...