为最近最少使用(LRU)缓存策略设计一个数据结构,它应该支持以下操作:获取数据(get)和写入数据(set)。 获取数据get(key):如果缓存中存在key,则获取其数据值(通常是正数),否则返回-1。 写入数据set…
LintCode-二叉树的层次遍历 II
给出一棵二叉树,返回其节点值从底向上的层次序遍历(按从叶节点所在层到根节点所在的层遍历,然后逐层从左往右遍历) 您在真实的面试中是否遇到过这个题? Yes 样例 给出一棵二叉树 {3,9,20,#,…
LintCode-最接近零的子数组和
给定一个整数数组,找到一个和最接近于零的子数组。返回第一个和最有一个指数。你的代码应该返回满足要求的子数组的起始位置和结束位置 样例 给出[-3, 1, 1, -3, 5],返回[0, 2],[1, 3], […
LintCode-图中两个点之间的路线
给出一张有向图,设计一个算法判断两个点 s 与 t 之间是否存在路线。 样例 如下图: A----->B----->C \ | \ | \ | \ v ->D--…
LintCode-硬币排成线
有 n 个硬币排成一条线。两个参赛者轮流从右边依次拿走 1 或 2 个硬币,直到没有硬币为止。拿到最后一枚硬币的人获胜。 请判定 第一个玩家 是输还是赢? 您在真实的面试中是否遇到…
LintCode-通配符匹配
判断两个可能包含通配符“?”和“*”的字符串是否匹配。匹配规则如下: '?' 可以匹配任何单个字符。 '*' 可以匹配任意字符串(包括空字符串)。 两个串完全匹配才算匹配成功。 函数接口如下: bool isMatch(…
LintCode-堆化
给出一个整数数组,堆化操作就是把它变成一个最小堆数组。 对于堆数组A,A[0]是堆的根,并对于每个A[i],A [i * 2 + 1]是A[i]的左儿子并且A[i * 2 + 2]是A[i]的右儿子。 样例 给出&nbs…
LintCode-下一个排列
给定一个若干整数的排列,给出按正数大小进行字典序从小到大排序后的下一个排列。 如果没有下一个排列,则输出字典序最小的序列。 样例 左边是原始排列,右边是对应的下一个排列。 1,2,3 → 1,3,2 …
LintCode-搜索旋转排序数组 II
跟进“搜索旋转排序数组”,假如有重复元素又将如何? 是否会影响运行时间复杂度? 如何影响? 为何会影响? 写出一个函数判断给定的目标值是否出现在数组中。 您在真实的面试中是否遇到过这个题? Yes 样例 给出…
LintCode-第k个排列
给定 n 和 k,求123..n组成的排列中的第 k 个排列。 样例 对于 n = 3, 所有的排列如下: 123 132 213 231 312 321 如果…
LintCode-最近公共祖先
给定一棵二叉树,找到两个节点的最近公共父节点(LCA)。 最近公共祖先是两个节点的公共的祖先节点且具有最大深度。 您在真实的面试中是否遇到过这个题? Yes 样例 对于下面这棵二叉树 4 / \ 3 7 / …
LintCode-k数和 II
给定n个不同的正整数,整数k(1<= k <= n)以及一个目标数字。 在这n个数里面找出K个数,使得这K个数的和等于目标数字,你需要找出所有满足要求的方案。 您在真实的面试中是否遇到过这个…