剑指offer
yibin94
这个作者很懒,什么都没留下…
展开
-
统计一个数字在排序数组中出现的次数。
统计一个数字在排序数组中出现的次数。代码如下:class Solution {public: int GetNumberOfK(vector<int> data ,int k) { int nums = 0; vector<int>::iterator it = data.begin(),et = data.end(); ...原创 2018-03-22 15:20:16 · 726 阅读 · 0 评论 -
数组中重复的数字
题目描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。代码如下:#include <map>class Solution {public: // Param...原创 2018-03-22 15:30:22 · 254 阅读 · 0 评论 -
连续子数组的最大和
题目描述HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。你会不会被他忽悠住?(子向量的长度至...原创 2018-03-22 15:34:25 · 282 阅读 · 0 评论 -
从尾到头打印链表
题目描述输入一个链表,从尾到头打印链表每个节点的值。代码如下:(主要是存储每个节点的指针值) struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };class So...原创 2018-03-22 15:39:01 · 242 阅读 · 0 评论 -
判断栈的压入,弹出序列
题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)代码如下:#include <stack>class Solution {pu...原创 2018-03-22 15:41:22 · 274 阅读 · 0 评论 -
用两个栈实现队列
题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。思路:栈1做入队功能,栈2做出队功能,出队时先检查栈2是否有元素,有就直接出栈顶元素;无则将栈1的元素全部依次出栈1 入 栈2,现在栈2的栈顶元素即出队元素;入队时直接往栈1塞元素即可。代码如下:class Solution{public: void push(int node) { ...原创 2018-03-22 15:45:42 · 335 阅读 · 0 评论 -
从上往下打印二叉树
题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。第一种是输出格式无要求的代码:/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/#include &...原创 2018-03-22 16:00:09 · 317 阅读 · 0 评论