我们知道,stack和queue是C++中常见的container.下面,我们来探究下如何以stack来实现queue,以及如何用queue来实现stack. 首先,先了解下stack与queue的基本属性. 一.stack 1,参数要求  stack模板类需要两个参数:一个元素类型,一个容器类型.容器类型缺省为deque. 2,基本操作 入栈:s.push(element);element加入栈顶. 出栈:s.pop(),栈顶元素被删除,无返回值. 访问栈顶:s.top().取得栈顶元素. 判…
1.把一个字符串转换成整数——<剑指Offer>P29 2.求链表中的倒数第k个结点——<剑指Offer>P30 3.实现Singleton模式——<剑指Offer>P48 参考:http://www.cnblogs.com/tonglin0325/p/5196818.html 4.数组的内存是连续的,所以数组的时间效率很高,可以用来实现简单的哈希表——<剑指Offer>35题“第一个只出现一次的字母” 5.面试题3:二维数组中的查找——<剑指Offe…
1.把数组排成最小的数 class Solution { public: static bool compare(const string& s1, const string& s2) { string t1 = s1 + s2; string t2 = s2 + s1; return t1 <= t2? true : false; } string PrintMinNumber(vector<int> numbers) { string str; int i, len…
研二的开始找工作了,首先祝愿他们都能够找到自己满意的工作.看着他们的身影,自问明年自己这个时候是否可以从容面对呢?心虚不已,赶紧从老严那儿讨来一本<剑指offer>.在此顺便将自己做题所想,发现的一些小技巧记录于此,就当是学习笔记.先上一些,没做完的后面有时间继续补上. 2013.09.04于行政北楼 一.数组 题目1:二维数组的查找 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成这样一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含…
在<剑指Offer>中,在栈和队列习题中,作者留下来一道题目供读者自己实现,即"用两个队列实现一个栈". 在计算机数据结构中,栈的特点是后进先出,即最后被压入(push)栈的元素会第一个被弹出(pop);队列的特点是先进先出,即第一个进入队列的元素将会被第一个弹出来.虽然栈和队列特点是针锋相对,但是两者却相互联系,可以互相转换. 在"用两个队列实现一个栈"问题中,我们用两个队列的压入和弹出来模拟栈的压入和弹出.我们通过画图的手段把抽象的问题形象化. 在上…
最近在用Java刷剑指offer(第二版)的面试题.书中原题的代码采用C++编写,有些题的初衷是为了考察C++的指针.模板等特性,这些题使用Java编写有些不合适.但多数题还是考察通用的算法.数据结构以及编程思想等,与语言本身无太大关系.因此在选择编程语言时,我还是选择了Java.好吧,主要是我C++不怎么会,仅仅是曾经学过俩月,使用Java顺手一些.后续可能再用Python刷一遍. 面试题3  数组中重复的数字 题目一:找出数组中重复的数字 描述:在长度为n的数组里所有数字都在0~n-1范围内…
1.二维数组中的查找 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. public class Solution { public boolean Find(int target, int [][] array) { if(array == null||array.length==0) return false; int rowIdx = 0,colIdx = array[0]…
1.二维数组中的查找 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. function Find(target, array) { var row = array.length; // 行数 var col = array[0].length; // 列数 // 从左下角开始比较 var r = row - 1; var c = 0; while(r >= 0 &&…
一.题目描述 把n个骰子仍在地上,所有的骰子朝上的一面的点数之和为s,输入n,打印出s所有可能的值出现的概率. 二.题解 <剑指offer>上给出的两种方法,尤其是代码,晦涩难懂且没有注释.而n个骰子的问题实质就是一个动态规划问题,所以文本主要从动态规划的角度来求解这个问题.首先该问题具备DP的两个特征:最优子结构性质和子问题的重叠性.具体的表现在:(1)n个骰子的点数依赖于n-1个骰子的点数,相当于在n-1个骰子点数的基础上再进行投掷.(2)求父问题的同时,需要多次利用子问题.由此定义状态转…
58.对称的二叉树 请实现一个函数,用来判断一颗二叉树是不是对称的.注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的. /* public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } */ public class Solution { boolean isSymmetrical(Tre…