首页 > 腾讯后台开发一面面经(许愿)
头像
金角银角大王
编辑于 2020-08-14 11:35
+ 关注

腾讯后台开发一面面经(许愿)

算法:这个真的好亏好亏,自己面试的时候紧张到抽风了,一个简单的单调栈问题居然写了半个小时都写不出来,事后冷静了一下,写了出来并优化了一下。
题目:

逛街

小Q在周末的时候和他的小伙伴来到大城市逛街,一条步行街上有很多高楼,共有n座高楼排成一行。
小Q从第一栋一直走到了最后一栋,小Q从来都没有见到这么多的楼,所以他想知道他在每栋楼的位置处能看到多少栋楼呢?(当前面的楼的高度大于等于后面的楼时,后面的楼将被挡住)
输入描述
				
				
				
				
输入第一行将包含一个数字n,代表楼的栋数,接下来的一行将包含n个数字wi(1<=i<=n),代表每一栋楼的高度。
1<=n<=100000;
1<=wi<=100000;
输出描述
输出一行,包含空格分割的n个数字vi,分别代表小Q在第i栋楼时能看到的楼的数量。
示例1

输入

6
5 3 8 3 2 5

输出

3 3 5 4 4 4

说明

当小Q处于位置3时,他可以向前看到位置2,1处的楼,向后看到位置4,6处的楼,加上第3栋楼,共可看到5栋楼。当小Q处于位置4时,他可以向前看到位置3处的楼,向后看到位置5,6处的楼,加上第4栋楼,共可看到4栋楼
。

自己后来写的代码:
import java.util.*; public class Main { public static void main(String[] args) { int n = 6; int nums[] = {5,3,8,3,2,5};  int res[] = new int[n];  Stack<Integer> stack = new Stack<>();  for(int i=0; i<n; i++)    res[i] += see(stack, nums[i]);  stack.clear();  for(int i=n-1; i>=0; i--)    res[i] += see(stack, nums[i]);  for(int i=0; i<n; i++)    {
res[i]--;  System.out.print(res[i]+" "); }
} public static int see(Stack<Integer> stack, int num){ if(stack.isEmpty()){
stack.push(num);  return 1;  } int jian = 0;  while(!stack.isEmpty()&&stack.peek()<=num)    {
jian++;  stack.pop(); }
stack.push(num); return jian+stack.size();  }
}

面试问题:

1、B+和B树的区别

2、NoSQL的知道吗,讲一下,讲了NoSQl的一些概念

3、然后redis的实现,redis只会用,不会问题,说了不会,就跳过了

4、进程调度算法有哪些,分别说一下

5、四次挥手的过程,为什么最后要客户端要等2msl的时间

真的好亏好亏,好心通,问题会的都答了,希望能过,许愿许愿,面试官大人收下膝盖!!!



更多模拟面试

全部评论

(2) 回帖
加载中...
话题 回帖

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐