leetcode程序员面试金典
东山阿强
流媒体
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
面试题 08.11. 硬币(java)
硬币。给定数量不限的硬币,币值为25分、10分、5分和1分,编写代码计算n分有几种表示法。(结果可能会很大,你需要将结果模上1000000007)示例1: 输入: n = 5 输出:2 解释: 有两种方式可以凑成总金额:5=55=1+1+1+1+1示例2: 输入: n = 10 输出:4 解释: 有四种方式可以凑成总金额:10=1010=5+510=5+1+1+1+...原创 2020-04-23 16:25:36 · 554 阅读 · 0 评论 -
※面试题 04.01 节点间通路(java)(邻接表,BFS,DFS)
节点间通路。给定有向图,设计一个算法,找出两个节点之间是否存在一条路径。示例1: 输入:n = 3, graph = [[0, 1], [0, 2], [1, 2], [1, 2]], start = 0, target = 2 输出:true示例2: 输入:n = 5, graph = [[0, 1], [0, 2], [0, 4], [0, 4], [0, 1], [1, 3]...原创 2020-03-13 21:37:49 · 491 阅读 · 0 评论 -
面试题 03.05 栈排序(java )
栈排序。 编写程序,对栈进行排序使最小元素位于栈顶。最多只能使用一个其他的临时栈存放数据,但不得将元素复制到别的数据结构(如数组)中。该栈支持如下操作:push、pop、peek 和 isEmpty。当栈为空时,peek 返回 -1。示例1: 输入:["SortedStack", "push", "push", "peek", "pop", "peek"][[], [1], [2], ...原创 2020-03-13 19:23:01 · 553 阅读 · 0 评论 -
面试题 03.03 堆盘子(java)
堆盘子。设想有一堆盘子,堆太高可能会倒下来。因此,在现实生活中,盘子堆到一定高度时,我们就会另外堆一堆盘子。请实现数据结构SetOfStacks,模拟这种行为。SetOfStacks应该由多个栈组成,并且在前一个栈填满时新建一个栈。此外,SetOfStacks.push()和SetOfStacks.pop()应该与普通栈的操作方法相同(也就是说,pop()返回的值,应该跟只有一个栈时的情况一样)。...原创 2020-03-13 17:55:08 · 349 阅读 · 0 评论 -
面试题 02.08 环路检测(java)(快慢指针)
给定一个有环链表,实现一个算法返回环路的开头节点。有环链表的定义:在链表中某个节点的next元素指向在它前面出现过的节点,则表明该链表存在环路。示例 1:输入:head = [3,2,0,-4], pos = 1输出:tail connects to node index 1解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:head = [1,2], pos =...原创 2020-03-12 19:21:54 · 502 阅读 · 1 评论 -
1013 将数组分成和相等的三个部分(java)
给你一个整数数组 A,只有可以将其划分为三个和相等的非空部分时才返回 true,否则返回 false。形式上,如果可以找出索引 i+1 < j 且满足 (A[0] + A[1] + ... + A[i] == A[i+1] + A[i+2] + ... + A[j-1] == A[j] + A[j-1] + ... + A[A.length - 1]) 就可以将数组三等分。 示例...原创 2020-03-11 11:08:44 · 317 阅读 · 0 评论 -
面试题 17.16 按摩师(java)
一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。注意:本题相对原题稍作改动 示例 1:输入: [1,2,3,1]输出: 4解释: 选择 1 号预约和 3 号预约,总时长 = 1 + 3 = 4。示例 2:输入:...原创 2020-03-10 19:29:26 · 498 阅读 · 0 评论 -
面试题 17.12 BiNode(java)
二叉树数据结构TreeNode可用来表示单向链表(其中left置空,right为下一个链表节点)。实现一个方法,把二叉搜索树转换为单向链表,要求值的顺序保持不变,转换操作应是原址的,也就是在原始的二叉搜索树上直接修改。返回转换后的单向链表的头节点。注意:本题相对原题稍作改动 示例:输入: [4,2,5,1,3,null,6,0]输出: [0,null,1,null,2,nul...原创 2020-03-10 19:03:42 · 519 阅读 · 1 评论 -
面试题 16.07 最大数值(java)
编写一个方法,找出两个数字a和b中最大的那一个。不得使用if-else或其他比较运算符。示例:输入: a = 1, b = 2输出: 2class Solution { public int maximum(int a, int b) { long p = (long)a; long q = (long)b; return (i...原创 2020-03-09 23:10:33 · 424 阅读 · 0 评论 -
面试题 08.10 颜色填充(java)(dfs)
颜色填充。编写函数,实现许多图片编辑软件都支持的“颜色填充”功能。给定一个屏幕(以二维数组表示,元素为颜色值)、一个点和一个新的颜色值,将新颜色值填入这个点的周围区域,直到原来的颜色值全都改变。示例1: 输入:image = [[1,1,1],[1,1,0],[1,0,1]] sr = 1, sc = 1, newColor = 2 输出:[[2,2,2],[2,2,0],[2,0,...原创 2020-03-09 18:58:11 · 609 阅读 · 0 评论 -
面试题 08.01 三步问题(java)
三步问题。有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶或3阶。实现一种方法,计算小孩有多少种上楼梯的方式。结果可能很大,你需要对结果模1000000007。示例1: 输入:n = 3 输出:4 说明: 有四种走法示例2: 输入:n = 5 输出:13提示:n范围在[1, 1000000]之间来源:力扣(LeetCode)链接:https://lee...原创 2020-03-09 11:23:18 · 417 阅读 · 0 评论 -
面试题 05.07 配对交换(java)(数位运算)
配对交换。编写程序,交换某个整数的奇数位和偶数位,尽量使用较少的指令(也就是说,位0与位1交换,位2与位3交换,以此类推)。示例1: 输入:num = 2(或者0b10) 输出 1 (或者 0b01)示例2: 输入:num = 3 输出:3提示:num的范围在[0, 2^30 - 1]之间,不会发生整数溢出。来源:力扣(LeetCode)链接:https://leet...原创 2020-03-09 10:41:09 · 398 阅读 · 0 评论 -
面试题 05.03 翻转数位(java)
给定一个32位整数 num,你可以将一个数位从0变为1。请编写一个程序,找出你能够获得的最长的一串1的长度。示例 1:输入: num = 1775(110111011112)输出: 8示例 2:输入: num = 7(01112)输出: 4来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/reverse-bits-lcci...原创 2020-03-09 09:52:29 · 571 阅读 · 0 评论 -
※面试题 05.01 插入(java)(数位运算)
插入。给定两个32位的整数N与M,以及表示比特位置的i与j。编写一种方法,将M插入N,使得M从N的第j位开始,到第i位结束。假定从j位到i位足以容纳M,也即若M = 10 011,那么j和i之间至少可容纳5个位。例如,不可能出现j = 3和i = 2的情况,因为第3位和第2位之间放不下M。示例1: 输入:N = 10000000000, M = 10011, i = 2, j = 6 输...原创 2020-03-08 21:28:37 · 363 阅读 · 0 评论 -
面试题 03.01 三合一(java)
三合一。描述如何只用一个数组来实现三个栈。你应该实现push(stackNum, value)、pop(stackNum)、isEmpty(stackNum)、peek(stackNum)方法。stackNum表示栈下标,value表示压入的值。构造函数会传入一个stackSize参数,代表每个栈的大小。示例1: 输入:["TripleInOne", "push", "push"...原创 2020-03-08 09:38:19 · 385 阅读 · 0 评论 -
面试题 02.06 回文链表(java)
编写一个函数,检查输入的链表是否是回文的。 示例 1:输入: 1->2输出: false 示例 2:输入: 1->2->2->1输出: true 进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/palindrome...原创 2020-03-07 09:43:36 · 353 阅读 · 0 评论 -
面试题 01.09 字符串轮转(java)
字符串轮转。给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成(比如,waterbottle是erbottlewat旋转后的字符串)。示例1: 输入:s1 = "waterbottle", s2 = "erbottlewat" 输出:True示例2: 输入:s1 = "aa", "aba" 输出:False提示:字符串长度在[0, 100000]范围内。说明:...原创 2020-03-05 21:14:21 · 350 阅读 · 0 评论 -
面试题 01.04 回文排列(java)
给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。回文串不一定是字典当中的单词。 示例1:输入:"tactcoa"输出:true(排列有"tacocat"、"atcocta",等等)来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/palin...原创 2020-03-05 19:22:58 · 405 阅读 · 0 评论 -
※面试题51 数组中的逆序对(java)(超级难题)(归并排序,分治思想)
在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。 示例 1:输入: [7,5,6,4]输出: 5 限制:0 <= 数组长度 <= 50000来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/shu-zu-zhong-de-ni-x...原创 2020-03-04 15:05:09 · 304 阅读 · 0 评论 -
※面试题37 序列化二叉树(java)(二叉树转数组,数组转二叉树)
请实现两个函数,分别用来序列化和反序列化二叉树。示例: 你可以将以下二叉树: 1 / \ 2 3 / \ 4 5序列化为 "[1,2,3,null,null,4,5]"注意:本题与主站 297 题相同:https://leetcode-cn.com/problems/serialize-and-deserialize-binar...原创 2020-03-03 16:35:16 · 650 阅读 · 1 评论 -
※面试题36 二叉搜索树与双向链表(java)(中序遍历,二叉线索化)
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。 为了让您更好地理解问题,以下面的二叉搜索树为例: 我们希望将这个二叉搜索树转化为双向循环链表。链表中的每个节点都有一个前驱和后继指针。对于双向循环链表,第一个节点的前驱是最后一个节点,最后一个节点的后继是第一个节点。下图展示了上面的二叉搜索树转化成的...转载 2020-03-03 11:30:57 · 311 阅读 · 0 评论 -
面试题 10.01 合并排序的数组(java)
给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B。 编写一个方法,将 B 合并入 A 并排序。初始化 A 和 B 的元素数量分别为 m 和 n。示例:输入:A = [1,2,3,0,0,0], m = 3B = [2,5,6], n = 3输出: [1,2,2,3,5,6]来源:力扣(LeetCode)链...原创 2020-03-03 10:55:08 · 317 阅读 · 0 评论
分享