刷题
面试题收集,常见算法集合,面试题练习
double_happiness
这个作者很懒,什么都没留下…
展开
-
【程序员面试宝典】栈的应用
1、下一个较大元素现在我们有一个int数组,请你找出数组中每个元素的下一个比它大的元素。给定一个int数组A及数组的大小n,请返回一个int数组,代表每个元素比他大的下一个元素,若不存在则为 - 1。保证数组中元素均为正整数。测试样例:[11, 13, 10, 5, 12, 21, 3], 7返回:[13, 21, 12, 12, 21, -1, -1]问题分析:(1)首先原创 2017-07-10 21:54:35 · 868 阅读 · 0 评论 -
【程序员面试宝典】链表相关面试题
1、链表中的第k个节点 题目描述: 输入一个链表,输出该链表中倒数第k个结点struct ListNode {int val;struct ListNode *next;ListNode(int x) :val(x), next(NULL) {}};ListNode* FindKthToTail(ListNode* pListHead, unsigned int k){原创 2017-07-04 22:36:34 · 384 阅读 · 0 评论 -
【程序员面试宝典】栈和队列相关面试题
1、集合栈题目描述:请实现一种数据结构SetOfStacks,由多个栈组成,其中每个栈的大小为size,当前一个栈填满时,新建一个栈。该数据结构应支持与普通栈相同的push和pop操作。给定一个操作序列int[][2] ope(C++为vector>),每个操作的第一个数代表操作类型,若为1,则为push操作,后一个数为应push的数字;若为2,则为pop操作,后一原创 2017-07-09 11:49:42 · 1319 阅读 · 0 评论 -
【程序员面试宝典】数组相关面试题
1、像素翻转有一副由NxN矩阵表示的图像,这里每个像素用一个int表示,请编写一个算法,在不占用额外内存空间的情况下(即不使用缓存矩阵),将图像顺时针旋转90度。给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后的NxN矩阵,保证N小于等于500,图像元素小于等于256。测试样例:[[1,2,3],[4,5,6],[7,8,9]],3返回:[[7,4,1],[8,5原创 2017-07-02 20:47:17 · 964 阅读 · 0 评论 -
【面试题】字符串旋转
题目描述:给定一个字符串aabcd要求将其左旋两位(即旋转后变成bcdaa)代码实现:#include#include#includevoid Reverse(char* left, char* right){ assert(left); assert(right); while (left < right) { char tmp = *left;原创 2017-06-18 23:30:33 · 711 阅读 · 0 评论 -
滑动窗口的最大值模拟实现
题目描述:给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。示例:输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],原创 2017-04-19 19:26:42 · 1684 阅读 · 0 评论 -
栈的压入弹出序列
题目描述:判断一个栈的输出序列是否是正确的,时间复杂度要求O(N)示例:输入栈:12 3 4 5 (1)输出栈: 45 3 2 1(2)输出栈: 43 5 1 2分析步骤:(1)首先需要一个辅助栈来模拟整个过程;(2)如果栈为空或者栈顶元素不等于输出栈的值,就将输入栈的当前元素入栈,并且将输入栈的当前索原创 2017-04-19 19:13:05 · 620 阅读 · 0 评论 -
栈实现队列&&队列实现栈
背景知识:动态栈的模拟实现:http://blog.csdn.net/double_happiness/article/details/70170984队列的模拟实现:http://blog.csdn.net/double_happiness/article/details/70176907题目:(1)用两个栈实现一个队列(2)用两个队列实现一个栈原创 2017-04-19 09:13:22 · 596 阅读 · 0 评论 -
一个数组实现两个栈
分析:用一个数组实现两个栈有三种思路:(1)将数组按照奇、偶为分成两组(2)将数组按照从两边到中间分成两组(3)将数组按照从中间到两边分成两组比价上面三种思路,第一种和第三种虽然也可以实现,但对比第二种来看空间利用率还是明显不好,因为在一个数组中我们实现的两个栈并不一定每次就是等大的,而一旦一个栈满了就要涉原创 2017-04-19 09:39:38 · 586 阅读 · 0 评论 -
min栈实现
1. 实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)分析:这道题目的主要难点在于Min的实现,因为由栈本身的特性,只能在栈顶进行操作,所以push(入栈)、pop(出栈)本身的时间复杂符就是O(1),对于min函数来说从栈自身的特点来说显然是没有O(1)的时间复杂度能完成的,所以可以考虑添加辅助栈,利用栈的自身操作实现或者辅助数组来通原创 2017-04-19 08:13:30 · 732 阅读 · 0 评论 -
atoi函数实现的各种考虑因素
#define _CRT_SECURE_NO_WARNINGS 1#include //atoi实现:将一个字符串转换为对应的整数enum Status //定义两个枚举常量判断所给变量是否合法{ kValid = 0, kInvalid};int g_nStatus = kValid; //定义全局变量判断是否出现非法变量int StrtoInt(const原创 2016-08-15 20:55:10 · 1037 阅读 · 0 评论