base深圳,上来直接5道算法,做1小时,做完一道一道讲思路,然后反问。上来直接五道算法,没问八股和项目,哈人。算法: (1) 给定一个字符串,编写一段代码测试该段字符串的括号是否完全闭合。 [()]{}{[()()]()} - true [(()] - false (2) 数组a[N],存放了数字1至N-1,其中某个数字重复一次。写一个函数,找出被重复的数字。 时间复杂度必须为O(N), 空间复杂度不能是O[N]。 函数原型:int find(int a[], int N) (3) 有一个二叉树,每个节点的值是一个整数。 写一个函数,判断这棵树中是否存在从根到叶子节点的一个路径,这个路径上所有节点之和为某一个值。 存在返回1, 否则返回0。 class TreeNode { int value; TreeNode left; TreeNode right; }; int haspath(TreeNode root, int value) }(4) 给定一个无序的整数数组,找到其中最长的上升子序列。 示例: 输入: [10,9,2,5,3,7,101,18] 输出: [2,3,7,101] 或 [2,3,7,18] 说明: 可能会有多种最长上升子序列的组合,你只需要输出其中一个即可。 你算法的时间复杂度应该为 O(n2),或者更好的 O(nlogn) 方案 (5) 实现 LRU 存储,LRUCache(capacity) 以正整数作为容量 capacity 初始化 LRU 缓存。 LRU 算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。 class LRUCache(capacity){ add(var key, var val); get(var key); } 反问:(1)有了一定项目经验后,前端学习应该先注重深度还是广度(2)针对我的表现有什么建议(3)岗位业务对我的建议:加强数据结构和算法#我的实习求职记录#