剑指offer第4章

包含 \(min\) 函数的栈

?

利用辅助栈,把每次的最小者(之前的最小元素和新压入栈的元素的两者中的较小值)都保存起来放到另一个辅助栈中。

?


栈的压入、弹出序列

?

总结上述入栈、出栈的过程,我们可以找到判断个序列是不是栈的弹出序列的规律:如果下一个弹出的数字刚好是栈顶数字,那么直接弹出。 如果下一个弹出的数字不在栈顶,我们把压栈序列中还没有入栈的数字压 入辅助栈,直到把下一个需要弹出的数字压入栈顶为止。如果所有的数字 都压入栈了仍然没有找到下一个弹出的数字,那么该序列不可能是一个弹出序列。

?



剑指offer第4章

时间: 2024-10-17 12:22:37

剑指offer第4章的相关文章

剑指offer—第三章高质量代码(o(1)时间删除链表节点)

题目:给定单向链表的头指针和一个节点指针,定义一个函数在O(1)时间删除该节点,链表节点与函数的定义如下:struct ListNode{int m_nValue;ListNode* m_pValue;};void DeleteNode(ListNode** pListNode,ListNode * pToBeDeleted){} 思路:将要删除的节点的下一个节点的值赋值给i,删除下一个节点,但要考虑到删除的节点是最后一个节点并且该链表不止有一个节点的情况和该链表只有一个节点,该节点既是头节点也

剑指offer第2章学习(2)

各种排序算法都有各自的使用范围.例如快速排序,如果数组本身已经排好序了,那么再使用它进行排序工作量为 O(n^2). //对公司所有员工的年龄进行排序 //假定,所有员工的年龄从15岁到60岁不等 //非常简单,没什么可说的 void SortAge(int data[], int length) { const int Youngest = 15, Oldest = 60; if (data == NULL || length <= 0) return; int Age[Oldest - Yo

剑指offer第8章

正则表达式的匹配 ?

剑指offer第3章

通常有3种方式把错误信息传递给函数调用者.? 函数用返回值来告知调用者是否出错. ?在错误发生的时候设置一个全局变量 ,此时可以用返回值来传递计算结果 ?异常方式:当程序出现错误的时候就抛出一个异常. ? 3种错误信息的处理方式的优缺点 ? ? ?

剑指offer—第三章高质量代码(合并两个排序链表)

题目:输入员两个递增排序的链表,合并这两个链表并使新的链表中的结点仍然是按照递增排序的. 思路:首先,定义两个头节点分别为Head1和Head2的链表,然后比较第一个节点的值,如果是Head1->mValue比Head2->mValue小,那么头节点,就是Head1,递归实现后面的节点的排序. C++代码: #include<iostream> using namespace std; struct ListNode { int m_nValue; ListNode* m_pNex

剑指offer—第三章高质量的代码(按顺序打印从1到n位十进制数)

题目:输入一个数字n,按照顺序打印出1到最大n位十进制数,比如输入3,则打印出1,2,3直到最大的3位数999为止. 本题陷阱:没有考虑到大数的问题. 本题解题思路:将要打印的数字,看成字符串,不足位的,高位补0.打印字符串的时候要对数字进行判断,不要将高位的0打印出来.打印字符串的结束条件是,当最高位产生进位时结束. c++代码: #include<iostream> using namespace std; //字符串模拟加法 bool Increment(char* number) {

【剑指offer】出现次数超过一半的数字

转载请注明出处:http://blog.csdn.net/ns_code/article/details/26957383 题目描述: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2. 输入: 每个测试案例包括2行: 第一行输入一个整数n(1<=n<=100000),表示数组中元素的个数. 第二行输入n个整数,表示数组中的每个元素,这n个整数的范围是[1

剑指Offer名企面试官精讲典型编程题pdf

下载地址:网盘下载 <剑指Offer:名企面试官精讲典型编程题(第2版)>剖析了80个典型的编程面试题,系统整理基础知识.代码质量.解题思路.优化效率和综合能力这5个面试要点.<剑指Offer:名企面试官精讲典型编程题(第2版)>共分7章,主要包括面试的流程,讨论面试每一环节需要注意的问题:面试需要的基础知识,从编程语言.数据结构及算法三方面总结程序员面试知识点:高质量的代码,讨论影响代码质量的3个要素(规范性.完整性和鲁棒性),强调高质量代码除完成基本功能外,还能考虑特殊情况并对

【剑指offer】Q38:数字在数组中出现的次数

与折半查找是同一个模式,不同的是,在这里不在查找某个确定的值,而是查找确定值所在的上下边界. def getBounder(data, k, start, end, low_bound = False): if end < start : return -1 while start <= end: mid = ( start + end ) >> 1 if data[ mid ] > k: end = mid - 1 elif data[ mid ] < k: star