↓ Skip to main content
  1. Tags/

面试题

2017

阿里面试算法题(转载)

·9433 words·19 mins
I want to match those five numbers 3, 7, 8, 9, 87 through regular express. Here is my thought: match those four numbers 3 7 8 9 var ^[3|7|8|9]\( match number 87 var ^87\) Then combine them together, (^[3|7|8|9]\(|^87\)). With some test, it seems correct. Is there any way to do that more efficiently? Q: 已知三个升序整数数组a[l], b[m]和c[n]。请在三个数组中各找一个元素,使得组成的三元组距离最小。 三元组的距离定义是:假设a[i]、b[j]和c[k]是一个三元组,那么距离为: Distance = max(|a[i] – b[j]|, |a[i] – c[k]|, |b[j] – c[k]|) 请设计一个求最小三元组距离的最优算法,并分析时间复杂度。

O(1)得到最小值的栈

·202 words·1 min
题意:定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数,要求时间复杂度为O(1) 思路:标题党去死一死好么。。。真是无趣。。。就是用两个栈封装成一个。。。一个栈s1正常搞。。。一个是辅助栈s2。。每次去存min(value,s2.top());

求旋转数组最小值(二分)

·183 words·1 min
题意:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。

用两个栈实现队列

·198 words·1 min
思路: 一个元素入队的时候直接插入到stack1中。。。 一个元素出队的时候。。。如果stack2不为空。。stack2顶的元素就是要出队的。。 如果stakc2为空。。。就将stack1清空,按照元素出栈的顺序依次入栈到stack2