![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试题
Wang__Peter
C、C++语言,数据结构伪语言,研究VS2013编译器对语法的处理方式,7月开始转型做产品,希望可以跟大家一起讨论,一起成长
展开
-
实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
这里的要求呢,跟我们平时的stack操作是一样的,那什么地方不同呢?多了一个min方法,并且要求时间复杂度为O(1),那该怎么做呢?O(1)的意思就是说,要用了,直接就能拿到,就好比数组直到下标一样,直接取。 那么如果能够将一个栈的栈顶一直存放的都是最小值呢?那么,我们的要求就实现了,借助c++的封装特性,我编写了以下代码,以便实现功能。#define _CRT_SECURE_NO_WARNING原创 2017-07-19 11:39:06 · 1231 阅读 · 0 评论 -
替换字符串中的空格为$$$。要求时间复杂度为O(N)
替换字符串中的值,如果是一个换一个,那么我们在遍历的时候就恶意直接替换,以为没有多余空间的使用,但是现在要将一个空格,换为三个‘‘,又要保证时间复杂度为O(N),那该怎么处理呢?我的思路是,先遍历一遍字符串,看看一共有多少个空格,然后以为一个空格换三个′‘,又要保证时间复杂度为O(N),那该怎么处理呢? 我的思路是,先遍历一遍字符串,看看一共有多少个空格,然后以为一个空格换三个’’,那么在空间的原创 2017-07-19 11:44:47 · 421 阅读 · 0 评论 -
判断一颗二叉树是是否是另一颗树的子树。
什么样的情况下,某一棵树会成为另一棵树的子数呢?子树的根节点是某一棵树的某个节点,接下来的子节点也相同,则该树是另一棵树的子集。首先找到与根节点相同的节点,在进行遍历,可使用递归法。template<class T>struct TreeNode{ T _data; TreeNode<T>* _left; TreeNode<T>* _right; TreeNode原创 2017-08-07 19:02:07 · 648 阅读 · 0 评论 -
判断一棵树是否是完全二叉树。
提示:层序遍历变型题。 完全二叉树:根节点下除叶子节点外,每个结点的左右子树不能为空,叶子结点重左至右依次存在。 满二叉树:完全二叉树的特殊情况,每一层节点数为2^( n -1 )个。 验证过程,当存节点的队列不为空,则进入循环,遍历二叉树,当左右节点均不为空,则释放当前队头节点,依次存放左左节点,右节点;左为空,右不为空时,不满足条件,则退出并返回false;下来就剩左右均为空,左空右不为空原创 2017-08-07 21:04:10 · 732 阅读 · 0 评论 -
链表翻转:给出一个链表和一个数k,链表前k个节点进行翻转
问题描述: 给出一个链表和一个数k,比如链表1→2→3→4→5→6,k = 2,翻转后2→1→4→3→6→5,若k = 3, 翻转后3→2→1→6→5→4,若k = 4,翻转后4→3→2→1→5→6。 这是一道美团网的现在上面是题,下面有个人的做法,对大家进行讲解,程序猿最直接的自然是代码,话不多说先上代码:#include<iostream>#include<stdlib.h>using原创 2017-07-25 13:33:44 · 2852 阅读 · 0 评论 -
已知集合A和B的元素分别用不含头结点的单链表存储,函数difference()用于求解集合A与B的差集,并将结果保存在集合A的单链表中
已知集合A和B的元素分别用不含头结点的单链表存储,函数difference()用于求解集合A与B的差集,并将结果保存在集合A的单链表中。例如,若集合A={5,10,20,15,25,30},集合B={5,15,35,25},完成计算后A={10,20,30}。可以利用循环的思想,创造出一个笛卡尔积的效果。当链表1中的每个节点,对应到链表2的每个节点进行寻找,找到数值相同的,则释放当前链表1的节点,并原创 2017-08-04 23:20:23 · 375 阅读 · 0 评论 -
判断一棵二叉树是否是平衡二叉树/求一颗二叉树的镜像
这道题目一共两问,其一如何判断一颗二叉树是否是平衡二叉树?平衡二叉树指任意一父节点左右字数高度差不大于1,就是说<=1即可。高度,自然有一个求属深度的方法,所以有了如下内容:bool IsBalance(){ return _IsBalance(_root);}int depth(){ return _depth(_root);}int _depth(Node* root)原创 2017-07-29 11:20:23 · 266 阅读 · 0 评论 -
一个m*n的矩阵,从左到右从上到下都是递增的,给一个数x,判断x是否在矩阵中。要求效率尽可能的高。
这道题目的解题关键就在于,二维矩阵从左到右从上到下都是递增的,先跟第一行数组的最后一个比较比它大就在下一行,比他小就在这一行的前面,等于他就刚好。#include<iostream>#include<stdlib.h>using namespace std;bool Find(int* arr, int row, int col,int num){ if (arr != NULL&&r原创 2017-07-29 11:30:25 · 697 阅读 · 0 评论