![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer
enemyfloggers
real
展开
-
[剑指offer]从上往下打印二叉树
题目: 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 思路: 借助队列queue来实现 打印队顶 如果队顶节点有左右子树那么就相继入队 pop队顶元素 代码: class Solution { public: vector<int> PrintFromTopToBottom(TreeNode* root) { if(!root){ ...原创 2020-03-11 20:35:37 · 103 阅读 · 0 评论 -
[剑指offer]栈的压入,弹出序列
题目: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的) 为什么说4,5,3,2,1是一个弹出序列 因为可以这样1入栈 2入栈 3入栈 ...原创 2020-03-09 21:34:20 · 107 阅读 · 0 评论 -
[剑指offer]包含min函数的栈(最小栈)
题目: 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。 注意:保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法。 思路: 使用两个栈 一个栈stack push任何值(来一个值就push进去) 另一个栈stack_little push比原stack_little栈顶元素小的值 因为当sta...原创 2020-03-09 21:25:40 · 152 阅读 · 0 评论 -
[剑指offer]顺时针打印矩阵
题目: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字 例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. 思路: 不断地收缩,缩小矩形的边界 定义四个边界变量up,d...原创 2020-03-06 21:52:27 · 116 阅读 · 0 评论 -
[剑指offer]合并两个排序链表(非递归,递归)
题目: 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 思路: 非递归: 定义链表指针p1,p2 首先 做个判断 将链表头的值较小的赋给p1 , 另外一个则赋给p2 然后两个链表的数值作比较 将p2链表的元素依次插入p1链表中 // 其中有几个小细节需要注意 : 看代码注释 递归: 递归的方法就很容易让人懂了 首先定...原创 2020-03-05 17:54:29 · 130 阅读 · 0 评论 -
[剑指offer]链表中倒数第k个节点
题目: 输入一个链表,输出该链表中倒数第k个结点。 思路: 快慢指针 快指针先走k步 然后快慢指针同时走 直到有一个指针指向空 返回慢指针 举个例子: {1,2,3,4,5} 3 快指针先走三步 指向节点4 此时慢指针在节点1 然后两个指针同时走 当快指针指到节点5的next为null时循环退出 返回慢指针 此时慢指针在节点3 代码展示: struct ListNo...原创 2020-03-04 13:47:41 · 102 阅读 · 0 评论 -
[剑指offer]输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
如题,使用一个结论: 一个二进制数减1后与原数进行&运算会消去原二进制数中最右边的1(即 n&=n-1) 举个例子: 比如说有个二进制数1100 减1 变为 1011 1011 &1100 = 1000 这样就消去了最右边的1 下面给出代码 class Solution { public: int NumberOf1(int n) { ...原创 2020-03-03 14:03:12 · 216 阅读 · 0 评论 -
[剑指offer]调整数组顺序使奇数在偶数前面O(n)
题目描述: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 解题思路: 遍历整个数组是偶数的array.push_back()到数组尾部 同时删除该位置上的偶数 array.erase(array.begin()+pos); 结合代码看,在删除之后我们需要--len,...原创 2020-03-03 16:20:45 · 105 阅读 · 0 评论