剑指Offer
文章平均质量分 75
小小小青菜
2016年11月1日
展开
-
vector实现二维数组
剑指offer第一个题就是二维数组的查找,天真地想用二维数组做,结果点开人家的在线编程,给的是vector。[尴尬......]用vector实现二维数组的好处:1、数组的越界可能会引起程序的崩溃,动态性不好,包括动态改变大小,动态申请。2、vector提供了operator[]函数,可以像数组一样的操作,而且还有边界检查,动态改变大小。简单说下C++构建动态的二维数组:int原创 2017-03-23 15:42:52 · 2757 阅读 · 0 评论 -
二维数组查找(普通数组&vector数组)
题目描述:分析方法:选取右上角的数字9。开始遍历,目标数字比所遍历的小,就往左走;目标数字比所遍历的大,就往下走;如果目标数据跟所遍历到的数据相等就说明找到了。代码:【写代码的时候突然发现自己不会二维数组传参了.......kepa 就写个小小程序测试了一下】测试二维数组传参的!!!#includeusing namespace std;void fun原创 2017-04-13 17:14:01 · 1301 阅读 · 0 评论 -
用两个栈实现队列
对于这个问题的分析,我们可以转换为两个栈之间的来回循环倒的一个问题。 在这,我们应该清楚,两个数据结构的数据特性,一个是先进后出(栈),一个是后进先出(队列),所以,我们在这里可以这样分析: 当我们入队操作的时候,对第一个栈进行压栈;如果我们想要出栈的时候,这个时候其实是要出栈的是第一个栈的栈底元素。所以这个时候我们把第一个栈栈顶元素push进入第二个栈,然后pop,这样依次到第一个栈原创 2017-04-13 20:37:32 · 232 阅读 · 0 评论 -
循环 & 递归 & 递推 之间的联系和区别
1、递归算法与循环的设计思路区别在于:函数或算法是否具备收敛性,当且仅当一个算法存在预期的收敛效果时,采用递归算法才是可行的,否则,就不能使用递归算法。2、从理论上说,所有的递归函数都可以转换为循环函数,然而代价通常都是比较高的。 但从算法结构来说,递归声明的结构并不总能够转换为循环结构,原因在于结构的引申本身属于递归的概念,用循环的方法在设计初期根本无法实现,这就像动多态的东西原创 2017-04-25 13:31:27 · 7605 阅读 · 0 评论 -
set 和 multiset 的区别
multiset:多重集合,其实就是 set 集合的扩展版。唯一的不同是 set 集合中一个值只能出现一次,而多重集合中一个值可以出现多次。 粗略看了看MSDN,在STL中,multiset和set的成员函数声明也是基本一样的,一些需要注意的地方是:set::insert(key)的返回值是一个pair,其中pair中的bool成员表明了key被插入之前原创 2017-04-25 18:40:08 · 10158 阅读 · 0 评论