首页 > 腾讯一面凉经
头像
我会个锤子的算法
编辑于 2021-04-05 21:15
+ 关注

腾讯一面凉经

直接手撕代码(第一次手撕代码完全不会)
面试官看我写不来输入输出函数 然后直接写方法
题目1:
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。

如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。

注意你不能在买入股票前卖出股票。

示例 1:

输入: [7,1,5,3,6,4]
输出: 5
解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。
注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。
示例 2:

输入: [7,6,4,3,1]
输出: 0
解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。

题目2、LRU缓存机制

你所掌握的数据结构,设计和实现一个  LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。

获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。
写入数据 put(key, value) - 如果密钥已经存在,则变更其数据值;如果密钥不存在,则插入该组「密钥/数据值」。当缓存容量达到上限时,它应该在写入新数据之前删除最久未使用的数据值,从而为新>的数据值留出空间。



进阶:

你是否可以在 O(1) 时间复杂度内完成这两种操作?



示例:
```
LRUCache cache = new LRUCache( 2 /* 缓存容量 */ );

cache.put(1, 1);
cache.put(2, 2);
cache.get(1);       // 返回  1
cache.put(3, 3);    // 该操作会使得密钥 2 作废
cache.get(2);       // 返回 -1 (未找到)
cache.put(4, 4);    // 该操作会使得密钥 1 作废
cache.get(1);       // 返回 -1 (未找到)
cache.get(3);       // 返回  3
cache.get(4);       // 返回  4
```
```java
class LRUCache {
public LRUCache(int capacity) {
}
public int get(int key) {
}
public void put(int key, int value) {
}
}
/**
* Your LRUCache object will be instantiated and called as such:
* LRUCache obj = new LRUCache(capacity);
* int param_1 = obj.get(key);
* obj.put(key,value);
*/
```

第一题只会暴力
第二题我记得我在哪里看过,但是硬是想不起来
算了 当涨经验了

然后出了10道基础+智力题, 然后就没有然后了
我记得的几个
1、某网络的IP地址空间为192.168.5.0/24,采用变长子网划分,子网掩码为255.255.255.248,则该网络的最大子网个数、每个子网内的最大可分配地址个数为______。 (转行狗表示这。。。)
2、如果你有两个大小一样的桶,分别装满了半桶红颜料和半桶蓝颜料,如果我们从蓝色颜料桶里舀一杯,倒入红色颜料桶里,搅拌均匀,然后再从红色颜料桶里舀一杯倒入蓝色颜料桶里。请问下列哪一种说法正确?
3、一个博物馆每分钟进来20人,每人平均停留20分钟,博物馆最少能容纳多少人才行?
4、二分查找的最坏时间复杂度
5、入栈出栈的顺序问题,已知入栈顺序为ABCDEF,有可能的出栈顺序是?


凉肯定是凉了  面试官最后看我太菜了都懒得理我了

更多模拟面试

全部评论

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

相关热帖

近期热帖

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

近期精华帖

热门推荐