93. Restore IP Addresses

题目

分析:多重循环,判断小数点合适的位置

代码如下(copy网上)

 class Solution {
public:
vector<string> restoreIpAddresses(string s) {
vector<string> ret;
if(s.size() > )
return ret;
for(int i = ; i < s.size(); i ++)
{// [0, i]
for(int j = i+; j < s.size(); j ++)
{// [i+1, j]
for(int k = j+; k < s.size()-; k ++)
{// [j+1, k], [k+1, s.size()-1]
string ip1 = s.substr(, i+);
string ip2 = s.substr(i+, j-i);
string ip3 = s.substr(j+, k-j);
string ip4 = s.substr(k+);
if(check(ip1) && check(ip2) && check(ip3) && check(ip4))
{
string ip = ip1 + "." + ip2 + "." + ip3 + "." + ip4;
ret.push_back(ip);
}
}
}
}
return ret;
}
bool check(string ip)
{
int value = stoi(ip);
if(ip[] == '')
{
return (ip.size() == );
}
else
{
if(value <= )
return true;
else
return false;
}
}
};

----------------------------------------------------------------------分割线--------------------------------------------------------------------------

94. Binary Tree Inorder Traversal

题目

分析:二叉树的中序遍历,题目要求不能使用递归,因此为了实现中序遍历,需要使用一个stack,只是在存储节点的 时候,中间节点利用两个NULL包裹起来存放。详细请看代码中的注释,代码如下:

 /**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
vector<int> inorderTraversal(TreeNode* root) {
vector<int> res;
if(root == NULL)
return res;
stack<TreeNode*> myStack;
TreeNode *temp;
myStack.push(root);
while(!myStack.empty())
{
temp = myStack.top();
myStack.pop(); if(NULL == temp)//表示访问到中间节点了,需要读取val
{
temp = myStack.top();
myStack.pop();
res.push_back(temp->val);
temp = myStack.top();
myStack.pop();
continue;
}
//右节点push
if(temp->right != NULL)
myStack.push(temp->right); //利用两个NULL把中间节点包裹起来
myStack.push(NULL);
myStack.push(temp);
myStack.push(NULL); //左节点push
if(temp->left != NULL)
{
myStack.push(temp->left);
}
}
return res; }
};

-------------------------------------------------------------------------------分割线-------------------------------------------------------------------

95. Unique Binary Search Trees II

题目

分析:递归求解,代码如下(copy网上代码)

 /**
* Definition for binary tree
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
vector<TreeNode *> generateTrees(int n) {
vector<TreeNode *> res;
if(n==)
return res;
return Helper(, n);
}
vector<TreeNode *> Helper(int begin, int end)
{
vector<TreeNode *> ret;
if(begin > end)
ret.push_back(NULL);
else if(begin == end)
{
TreeNode* node = new TreeNode(begin);
ret.push_back(node);
}
else
{
for(int i = begin; i <= end; i ++)
{//root
vector<TreeNode *> left = Helper(begin, i-);
vector<TreeNode *> right = Helper(i+, end);
for(int l = ; l < left.size(); l ++)
{
for(int r = ; r < right.size(); r ++)
{
//new tree
TreeNode* root = new TreeNode(i);
root->left = left[l];
root->right = right[r];
ret.push_back(root);
}
}
}
}
return ret;
}
};

----------------------------------------------------------------------------分割线---------------------------------------------------------------------

96. Unique Binary Search Trees

题目

分析:这题和95题是一样的,代码如下(copy网上代码):

 class Solution {
public:
int numTrees(int n) {
int f[n+];
memset (f , , sizeof(int)*(n+));
f[]=;
for(int i=; i<=n; i++)
for(int j=; j<i; j++)
f[i] += f[j] * f[i-j-]; return f[n];
}
};

Leetcode题解(29)的更多相关文章

  1. [LeetCode 题解]: Maximum Subarray

    前言   [LeetCode 题解]系列传送门:  http://www.cnblogs.com/double-win/category/573499.html   1.题目描述 Find the c ...

  2. [LeetCode 题解]: plusOne

    前言   [LeetCode 题解]系列传送门:  http://www.cnblogs.com/double-win/category/573499.html   1.题目描述 Given a no ...

  3. [LeetCode 题解]: ZigZag Conversion

    前言   [LeetCode 题解]系列传送门:  http://www.cnblogs.com/double-win/category/573499.html   1.题目描述 The string ...

  4. 【LeetCode题解】二叉树的遍历

    我准备开始一个新系列[LeetCode题解],用来记录刷LeetCode题,顺便复习一下数据结构与算法. 1. 二叉树 二叉树(binary tree)是一种极为普遍的数据结构,树的每一个节点最多只有 ...

  5. leetcode题解-122买卖股票的最佳时期

    题目 leetcode题解-122.买卖股票的最佳时机:https://www.yanbinghu.com/2019/03/14/30893.html 题目详情 给定一个数组,它的第 i 个元素是一支 ...

  6. 【LeetCode题解】3_无重复字符的最长子串(Longest-Substring-Without-Repeating-Characters)

    目录 描述 解法一:暴力枚举法(Time Limit Exceeded) 思路 Java 实现 Python 实现 复杂度分析 解法二:滑动窗口(双指针) 思路 Java 实现 Python 实现 复 ...

  7. 【LeetCode题解】225_用队列实现栈(Implement-Stack-using-Queues)

    目录 描述 解法一:双队列,入快出慢 思路 入栈(push) 出栈(pop) 查看栈顶元素(peek) 是否为空(empty) Java 实现 Python 实现 解法二:双队列,入慢出快 思路 入栈 ...

  8. 【LeetCode题解】232_用栈实现队列(Implement-Queue-using-Stacks)

    目录 描述 解法一:在一个栈中维持所有元素的出队顺序 思路 入队(push) 出队(pop) 查看队首(peek) 是否为空(empty) Java 实现 Python 实现 解法二:一个栈入,一个栈 ...

  9. 【LeetCode题解】844_比较含退格的字符串(Backspace-String-Compare)

    目录 描述 解法一:字符串比较 思路 Java 实现 Python 实现 复杂度分析 解法二:双指针(推荐) 思路 Java 实现 Python 实现 复杂度分析 更多 LeetCode 题解笔记可以 ...

  10. 【LeetCode题解】25_k个一组翻转链表(Reverse-Nodes-in-k-Group)

    目录 描述 解法一:迭代 思路 Java 实现 Python 实现 复杂度分析 解法二:递归(不满足空间复杂度) 思路 Java 实现 Python 实现 复杂度分析 更多 LeetCode 题解笔记 ...

随机推荐

  1. UVW源码漫谈(番外篇)—— Emitter

    这两天天气凉了,苏州这边连续好几天都是淅淅沥沥的下着小雨,今天天气还稍微好点.前两天早上起来突然就感冒了,当天就用了一卷纸,好在年轻扛得住,第二天就跟没事人似的.在这里提醒大家一下,天气凉了,睡凉席的 ...

  2. 西邮linux兴趣小组2014纳新免试题(三)

    [第三关] 题目 http://sortsth.sinaapp.com/ 分析 查看网页源码,得知题目让找出6种排序算法,每次刷新或提交序列都变化. 15种算法清单: CountingSort     ...

  3. shell二位数组——终端字符下降动画

    猜想:Shell支持关联数组,可以利用关联数组模拟二维数组. [验证猜想] #!/bin/bash array[1,1]=1 array[2,1]=2 array[3,1]=3 for i in `s ...

  4. 《MATLAB从入门到放弃》打通 “矩阵” 障碍

    目录: »   矩阵的生成与大小  >   简单矩阵的生成  >  随机矩阵的生成  >   矩阵的大小 »  矩阵的索引与访问 »  矩阵的拼接与裁剪 >  矩阵的拼接 &g ...

  5. Linux的硬盘使用情况、挂载、SSD挂载(查看df -h不能看到的卷)

    linux上的盘和window的有区别,磁盘空间必须挂载在目录上,要不然没用 对与新增的硬盘.SSD固态硬盘.挂载到linux上的操作如下: df -h      #显示目前在Linux系统上的文件系 ...

  6. ES6 Promise 对象

    Promise 的含义 Promise 是异步编程的一种解决方案,比传统的解决方案--回调函数和事件--更合理和更强大.它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供了Pro ...

  7. java文档操作

    背景:因是动态报表,1)作成excel模版2)数据填充3)转化为PDF提出解决方法:[open source]1)Apache Poi+I text2) JodConvert+OpenOffice/l ...

  8. Highway Networks

    一 .Highway Networks 与 Deep Networks 的关系 深层神经网络相比于浅层神经网络具有更好的效果,在很多方面都已经取得了很好的效果,特别是在图像处理方面已经取得了很大的突破 ...

  9. 【转】NoClassDefFoundError和ClassNotFoundException

    调试Hadoop源码时,一运行就报这个错误,后来发现是maven配置时,scope配置的问题, MAVEN Scope使用  相关链接:http://acooly.iteye.com/blog/178 ...

  10. 移植u-boot-2012.04.01到JZ2440

    开发环境:Ubuntu 12.04 开发板:JZ2440  256M NandFlash  64M SDRAM 交叉编译器:arm-linux-gcc-4.3.2 u-boot:u-boot-2012 ...