21.输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)

class Solution {
public:
bool IsPopOrder(vector<int> pushV,vector<int> popV) {
if(pushV.empty()) return true; //空时,为真
int n = pushV.size();
stack<int> stack;
int k = ; //指向popv
for(int i=;i<n;i++){
if(pushV[i] == popV[k]){
k++;
}else{
stack.push(pushV[i]);
}
}
while(!stack.empty()){
if(stack.top() == popV[k]){
stack.pop();
k++;
}else{
break;
}
}
if(stack.empty()) return true;
else return false;
}
};

22.从上往下打印出二叉树的每个节点,同层节点从左至右打印。

/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};*/
class Solution {
public:
vector<int> PrintFromTopToBottom(TreeNode* root) {
vector<int> res;
if (root == nullptr) return res;
queue<TreeNode*> q1;
queue<TreeNode*> q2; q1.push(root);
while (!q1.empty()) {
while (!q1.empty()) {
TreeNode* p = q1.front();
if (p->left)
q2.push(p->left);
if (p->right)
q2.push(p->right);
res.push_back(p->val);
q1.pop();
}
swap(q1,q2);
}
return res;
}
};

23.输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。

class Solution {
private:
bool doVerifySequenceOfBST(vector<int>& sequence) {
int n = sequence.size();
if(sequence.empty()) return true; vector<int> left;
vector<int> right;
int rootVal = sequence[n-];
for(int i=;i<n-;i++){
if(sequence[i] <= rootVal){
left.push_back(sequence[i]);
}else{
break;
}
}
int leftSize = left.size();
for(int i=leftSize;i<n-;i++){
if(sequence[i]>=rootVal){
right.push_back(sequence[i]);
}else{
break;
}
}
if(leftSize + right.size() != sequence.size() - ) return false;
return doVerifySequenceOfBST(left) && doVerifySequenceOfBST(right);
}
public:
bool VerifySquenceOfBST(vector<int> sequence) {
int n = sequence.size();
if(sequence.empty()) return false;
return doVerifySequenceOfBST(sequence);
}
};

24.输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。

class Solution {
private:
void doFindPath(TreeNode* root, int expectNumber, int sum,
vector<int> path, vector<vector<int>>& res) {
if (root == nullptr) return; path.push_back(root->val);
sum = sum + root->val;
if(sum == expectNumber && !root->left && !root->right){
res.push_back(path);
return;
}
if(sum > expectNumber) return;
doFindPath(root->left, expectNumber, sum, path, res);
doFindPath(root->right, expectNumber, sum, path, res);
}
public:
vector<vector<int>> FindPath(TreeNode* root, int expectNumber) {
vector<vector<int>> res;
vector<int> path;
doFindPath(root, expectNumber, , path, res);
return res;
}
};

25.输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)

class Solution {
public:
RandomListNode* Clone(RandomListNode* pHead) {
if (pHead == nullptr) return nullptr;
//copy on the next
RandomListNode* p = pHead;
while (p) {
RandomListNode* q = new RandomListNode(p->label);
q->next = p->next;
q->random = nullptr;
p->next = q;
p = q->next;
}
//deal random pointer
p = pHead;
while (p) {
if (p->random) {
p->next->random = p->random->next;
}
p = p->next->next;
}
//split two list
p = pHead;
RandomListNode *head = p->next;
RandomListNode *q = head;
while (p) {
p->next = q->next;
p = p->next;
if (p) {
q->next = p->next;
q = q->next;
}
}
return head;
}
};

剑指offer(21-25)编程题的更多相关文章

  1. 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面

    剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 Offer 21 这题的解法其实是考察快慢指针和头尾指针. package com.walegarrett.offer; /** * @Aut ...

  2. 剑指offer计划25(模拟中等)---java

    1.1.题目1 剑指 Offer 29. 顺时针打印矩阵 1.2.解法 常规开头,先判断特殊情况,然后创建四个变量存放矩阵四边的长度限制. 创建res数组存放结果. 循坏开始,遍历完一行或者一列,就将 ...

  3. 【Java】 剑指offer(21) 调整数组顺序使奇数位于偶数前面

    本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇 ...

  4. 【剑指Offer】俯视50题之21 - 30题

    面试题21包括min函数的栈  面试题22栈的压入.弹出序列  面试题23从上往下打印二叉树  面试题24二叉搜索树的后序遍历序列  面试题25二叉树中和为某一值的路径  面试题26复杂链表的复制  ...

  5. 剑指offer 面试25题

    面试25题:题目:合并两个排序的链表 题:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 解题思路:递归,并需注意对空链表单独处理. 解题代码: # -* ...

  6. [持久更新] 剑指offer题目Python做题记录

    第一题 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 思路:先快速定位到 ...

  7. 【剑指Offer】25、复杂链表的复制

      题目描述:   输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head.(注意,输出结果中请不要返回参数中的节 ...

  8. 剑指offer(25)复杂链表的复制

    题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head.(注意,输出结果中请不要返回参数中的节点引用,否 ...

  9. 《剑指offer》第二十一题(调整数组顺序使奇数位于偶数前面)

    // 面试题21:调整数组顺序使奇数位于偶数前面 // 题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有 // 奇数位于数组的前半部分,所有偶数位于数组的后半部分. #inclu ...

  10. 《剑指offer》第十三题(机器人的运动范围)

    // 面试题:机器人的运动范围 // 题目:地上有一个m行n列的方格.一个机器人从坐标(0, 0)的格子开始移动,它 // 每一次可以向左.右.上.下移动一格,但不能进入行坐标和列坐标的数位之和 // ...

随机推荐

  1. Android-HttpsURLConnectionHelp工具类

    Java版(HttpURLConnection)Https请求工具类 public class HttpsURLConnectionHelp { /** * 加密协议 */ public static ...

  2. 如何为SharePoint文档库、文件夹、文件单独设置权限

    在这里使用截图的方式简单描述两个问题:设置SharePoint Server文档库权限和文档库中的文件夹权限 一.设置SharePoint Server文档库权限 Figure 1 - 打开文档库后, ...

  3. XEvent--Demo--使用XEvent来捕获在数据库DB1上发生的锁请求和锁释放

    --==============================================================--使用XEvent来捕获在数据库DB1上发生的锁请求和锁释放--=== ...

  4. .Net Core Runtime安装说明

    在开发阶段,都是直接安装.Net Core的SDK,但是在部署的时候你还是直接装SDK吗?当然直接装SDK也没什么问题,也可以少一些麻烦.但是如果你像我一样不喜欢在产线上装SDK,只想装Runtime ...

  5. HTML5 SSE 数据推送应用开发

    javascript表达行为,css表达外观,注意HTML既表达结构(逻辑结构),又表达内容(数据本身)通常需要更新数据时,并不需要更新结构,正是这种不改变组织结构仅改变数据的诉求,推动了数据拉取和数 ...

  6. django系列7.2--django中的cookie和session基本操作,浏览器登陆验证的不同实现

    django中的cookie和session(02)–操作 一.Django中的cookie操作 ctrl + shift + del 是谷歌浏览器中清除页面缓存和cookie的快捷键 1.设置coo ...

  7. @media媒体查询

    @media媒体查询 @media screen and (min-width:640px) and (max-width:1920px){/*当屏幕尺寸大于640px时与小于1920时*/ .pub ...

  8. 洛谷P1742 最小圆覆盖(计算几何)

    题面 传送门 题解 之前只是在抄题解--这篇才算是真正自己想的吧-- 首先我们把输入序列给\(random\)一下防止出题人好心送你一个毒瘤序列 我们设\(r\)为当前最大半径,\(o\)为此时对应圆 ...

  9. php扩展memcache和memcached区别?以及memcached软件的介绍

    引用“http://www.vicenteforever.com/2012/03/memcache-different-memcached/” memcached是一个软件,而PHP包括了memcac ...

  10. SpringBoot + Scala环境部署

    在pom.xml文件中添加: <dependencies>中 <!-- 添加Scala依赖 --> <dependency> <groupId>org. ...