- 博客(100)
- 资源 (4)
- 收藏
- 关注
原创 337. 打家劫舍 III
337. 打家劫舍 III 【中等题】【动态规划】在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。 除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。计算在不触动警报的情况下,小偷一晚能...
2020-03-11 16:35:20
119
原创 美团面试题
470. 用 Rand7() 实现 Rand10() 【中等题】【概率】曾经面美团的时候被问了一道概率题,后来在刷题的时候发现是leetcode的470题,特此拿出来和大家探讨。已有方法 rand7 可生成 1 到 7 范围内的均匀随机整数,试写一个方法 rand10 生成 1 到 10 范围内的均匀随机整数。不要使用系统的 Math.random() 方法rand7()已经定义,返...
2020-03-11 12:55:39
2255
原创 【打家劫舍系列】问题二
213. 打家劫舍 II 【中等题】【动态规划】你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。输入: ...
2020-03-10 16:58:26
330
原创 【打家劫舍系列】问题一
198. 打家劫舍 【简单题】【动态规划】你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 ...
2020-03-10 11:36:55
197
原创 稀疏相似度
面试题 17.26. 稀疏相似度 【困难题】【创新】两个(具有不同单词的)文档的交集(intersection)中元素的个数除以并集(union)中元素的个数,就是这两个文档的相似度。例如,{1, 5, 3} 和 {1, 7, 2, 3} 的相似度是 0.4,其中,交集的元素有 2 个,并集的元素有 5 个。给定一系列的长篇文档,每个文档元素各不相同,并与一个 ID 相关联。它们的相似度非常...
2020-03-09 21:35:04
474
原创 面试题 16.05. 阶乘尾数
面试题 16.05. 阶乘尾数 【简单题】【数学】设计一个算法,算出 n 阶乘有多少个尾随零。输入: 3输出: 0解释: 3! = 6, 尾数中没有零。输入: 5输出: 1解释: 5! = 120, 尾数中有 1 个零.题目讲解【历史重难点题目】历史重难点题目总结【核心思想】数5的个数【思路】尾数的0都是某一个数乘以10得到的只有5和一个偶数相乘会...
2020-03-08 22:42:15
473
原创 面试题 08.06. 汉诺塔问题
面试题 08.06. 汉诺塔问题 【简单题】【递归】在经典汉诺塔问题中,有 3 根柱子及 N 个不同大小的穿孔圆盘,盘子可以滑入任意一根柱子。一开始,所有盘子自上而下按升序依次套在第一根柱子上(即每一个盘子只能放在更大的盘子上面)。移动圆盘时受到以下限制:(1) 每次只能移动一个盘子;(2) 盘子只能从柱子顶端滑出移到下一根柱子;(3) 盘子只能叠在比它大的盘子上。请编写程序,用栈将...
2020-03-07 11:03:07
467
原创 310. 最小高度树
310. 最小高度树 【中等题】【拓扑排序】对于一个具有树特征的无向图,我们可选择任何一个节点作为根。图因此可以成为树,在所有可能的树中,具有最小高度的树被称为最小高度树。给出这样的一个图,写出一个函数找到所有的最小高度树并返回他们的根节点。格式该图包含 n 个节点,标记为 0 到 n - 1。给定数字 n 和一个无向边 edges 列表(每一个边都是一对标签)。你可以假设没有重复的边...
2020-03-06 22:38:31
298
原创 拓扑排序:210. 课程表
210. 课程表 II 【中等题】【拓扑排序】现在你总共有 n 门课需要选,记为 0 到 n-1。在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1]给定课程总量以及它们的先决条件,返回你为了学完所有课程所安排的学习顺序。可能会有多个正确的顺序,你只要返回一种就可以了。如果不可能完成所有课程,返回一个空数组。输...
2020-03-05 22:02:17
196
原创 拓扑排序:207. 课程表
207. 课程表 【中等题】【拓扑排序】现在你总共有 n 门课需要选,记为 0 到 n-1。在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1]给定课程总量以及它们的先决条件,判断是否可能完成所有课程的学习?输入: 2, [[1,0]] 输出: true解释: 总共有 2 门课程。学习课程 1 之前,你需要完...
2020-03-04 13:28:57
239
原创 丑数
面试题49. 丑数 【中等题】【动态规划】我们把只包含因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。(1是特殊的丑数)输入: n = 10输出: 12解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。题目讲解【核心思想】动态规划【思路】定义三个指针p2,p3,p5,p2指向的...
2020-03-01 11:03:58
162
原创 编辑距离 五种解法
72. 编辑距离 【困难题】【动态规划】给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符,删除一个字符,替换一个字符输入: word1 = "horse", word2 = "ros"输出: 3解释: horse -> rorse (将 'h' 替换为 'r')rors...
2020-02-29 13:06:27
497
1
原创 字典树(前缀树)
208. 实现 Trie (前缀树) 【中等题】实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作。Trie trie = new Trie();trie.insert("apple");trie.search("apple"); // 返回 truetrie.search("app"); // 返回 falset...
2020-02-28 13:24:56
181
原创 二叉树遍历的递归与非递归解法
今天为大家总结了二叉树前中后序遍历的递归与迭代解法:1. 前序遍历递归List<Integer> list=new ArrayList<>();public List<Integer> preOrder(TreeNode root ){ if(root == null) return list; list.add(root...
2020-02-27 11:54:33
232
原创 二叉树的后序遍历(非递归)
145. 二叉树的后序遍历 【困难题】【后序遍历】给定一个二叉树,返回它的 后序 遍历。输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1]题目讲解解法1:递归【代码】List<Integer> list=new ArrayList<>();public List<Intege...
2020-02-27 11:40:16
169
原创 二叉树的右视图
199. 二叉树的右视图 【中等题】【层次遍历】给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。输入: [1,2,3,null,5,null,4]输出: [1, 3, 4]解释: 1 <--- / \2 3 <--- \ \ 5 4 &l...
2020-02-26 13:16:45
158
原创 接雨水
42. 接雨水 【困难题】【双指针】给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6题目讲解解法一【暴力解】【核心思想...
2020-02-25 11:56:35
224
原创 盛最多水的容器
11. 盛最多水的容器 【中等题】【双指针】给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,...
2020-02-25 11:15:22
116
原创 合法二叉搜索树
面试题 04.05. 合法二叉搜索树 【中等题】【中序遍历】实现一个函数,检查一棵二叉树是否为二叉搜索树。输入: 2 / \ 1 3输出: true输入: 5 / \ 1 4 / \ 3 6输出: false解释: 输入为: [5,1,4,null,null,3,6]。 根节点的值为 5 ,但是其右子节点...
2020-02-24 11:31:45
297
原创 最短超串
面试题 17.18. 最短超串 【中等题】假设你有两个数组,一个长一个短,短的元素均不相同。找到长数组中包含短数组所有的元素的最短子数组,其出现顺序无关紧要。返回最短子数组的左端点和右端点,如有多个满足条件的子数组,返回左端点最小的一个。若不存在,返回空数组。输入:big = [7,5,9,0,2,1,3,5,7,9,1,1,5,8,8,9,7]small = [1,5,9]输出:...
2020-02-23 22:02:04
575
原创 面试题 04.10. 检查子树
面试题 04.10. 检查子树 【中等题】【递归】检查子树。你有两棵非常大的二叉树:T1,有几万个节点;T2,有几万个节点。设计一个算法,判断 T2 是否为 T1 的子树。如果 T1 有这么一个节点 n,其子树与 T2 一模一样,则 T2 为 T1 的子树,也就是说,从节点 n 处把树砍断,得到的树与 T2 完全相同。输入:t1 = [1, 2, 3], t2 = [2]输出:true...
2020-02-23 14:47:09
176
原创 面试题 16.24. 数对和
面试题 16.24. 数对和 【中等题】【双指针】设计一个算法,找出数组中两数之和为指定值的所有整数对。一个数只能属于一个数对。输入: nums = [5,6,5], target = 11输出: [[5,6]]输入: nums = [5,6,5,6], target = 11输出: [[5,6],[5,6]]题目讲解【核心思想】双指针一个从前往后,一个从后往前【数...
2020-02-22 17:23:19
240
原创 面试题 08.11. 硬币
面试题 08.11. 硬币 【中等题】【动态规划】给定数量不限的硬币,币值为25分、10分、5分和1分,编写代码计算n分有几种表示法。(结果可能会很大,你需要将结果模上1000000007)输入: n = 5输出:2解释: 有两种方式可以凑成总金额:5=55=1+1+1+1+1输入: n = 10输出:4解释: 有四种方式可以凑成总金额:10=1010=5+510=5...
2020-02-21 17:46:56
527
原创 关于计算机学科的答疑(持续更新)
首先:计算机学长整理的资料【点击这里】,帮助大家找工作回答如下:无论你以后什么方向,计算机四门专业课,也就是考研大四门《计算机体系结构》《计算机网络》《操作系统》《数据结构》,这是基础中的基础,区分计算机专业还是别的专业,就看这四门课你有没有掌握。你需要掌握一门编程语言,一般来说Java和C++二选一,这里我推荐新入门的同学学Java,因为Java用途更广泛,用人单位的需求也更大,能做的事...
2020-02-21 13:48:33
1099
原创 面试题59 - I. 滑动窗口的最大值
面试题59 - I. 滑动窗口的最大值 【困难】吐槽:这道题与LeetCode239 题相同,但是那道题标的困难题,这道题标的简单题,搞不懂搞不懂给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7] 解释: 滑动窗口的位置 ...
2020-02-20 17:11:12
240
原创 面试题68 - II. 二叉树的最近公共祖先
面试题68 - II. 二叉树的最近公共祖先 【简单题】【递归】给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,nu...
2020-02-19 12:48:28
181
原创 面试题41. 数据流中的中位数
面试题41. 数据流中的中位数 【困难题】【大顶堆小顶堆】如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。例如,[2,3,4] 的中位数是 3;[2,3] 的中位数是 (2 + 3) / 2 = 2.5设计一个支持以下两种操作的数据结构:void ...
2020-02-18 13:12:34
188
原创 面试题60. n个骰子的点数
面试题60. n个骰子的点数 【简单题】【动态规划】把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。你需要用一个浮点数数组返回答案,其中第 i 个元素代表这 n 个骰子所能掷出的点数集合中第 i 小的那个的概率。输入: 1输出: [0.16667,0.16667,0.16667,0.16667,0.16667,0.16667]输入: 2...
2020-02-17 22:13:59
206
原创 面试题36. 二叉搜索树与双向链表
面试题36. 二叉搜索树与双向链表 【中等题】【中序遍历】输入一棵二叉搜索树,按照中序遍历,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向,还需要返回链表中的最小元素节点的指针。下图展示了二叉搜索树转化成的链表。“head” 表示指向链表中有最小元素的节点。题目讲解解法1:迭代解法【核心思想】用栈实现中序遍历【数据结构】...
2020-02-16 14:27:00
122
原创 为什么:关于因果关系的新科学 下载
关注微信公众号“算法岗从零到无穷”,后台回复“为什么”,免费领取本书关注微信公众号“算法岗从零到无穷”,更多算法知识点告诉你。
2020-02-15 21:02:28
1596
原创 面试题62. 圆圈中最后剩下的数字
面试题62. 圆圈中最后剩下的数字 【简单题】【约瑟夫环】0,1,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。输入: n = 5, m = 3输出: 3输入: n = 10,...
2020-02-15 13:56:15
217
原创 《剑指offer》面试题59 - II. 队列的最大值
面试题59 - II.队列的最大值,中等题请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front的时间复杂度都是O(1)。若队列为空,pop_front 和 max_value 需要返回 -1。输入: ["MaxQueue","push_back","push_back","max_value","po...
2020-02-14 17:05:52
350
原创 《剑指offer》数组中重复的数字
题目链接:数组中重复的数字这道题大家的第一反应就是排序和Hash吧。排序我们就不说了,排完序一次找重复就行了,最快的排序复杂度O(nlogn)。我们来讲讲Hash,对于java来说,用一个HashSet就搞定了。代码如下:public int findRepeatNumber(int[] nums) { Set<Integer> set = new HashSet<...
2020-02-13 22:26:59
116
原创 LeetCode股票问题通解(一)
股票问题是动态规划中一类很恶心的题目,大家可以自己先去做一下,你一定会发现各个股票的问题解法都不一样,奇淫技巧特别多,让人觉得,我怎么想得到?再让我做一遍我也做不出来!那么今天,我将告诉大家一个通用的方法,一个方法,解决6道股票问题。同时也要感谢leetcode用户fun4LeetCode,本文参考:https://urlify.cn/zYbu2a首先,我们用一个三维数组来存储状态的组合:...
2020-02-09 21:28:18
238
原创 LDA主题模型详解(面试的问题都在里面)
本文参考《LDA数学八卦》,想获得此书,关注我,并在微信后台回复“LDA”,资源送给你。请帮忙分享给你的朋友喔!1. LDA主题模型想要完成什么任务我们设有20个主题,LDA主题模型的目标是为每一篇文章找到一个20维的向量,向量中的20个值代表着这篇文章属于某一个主题的概率大小。是一个类似于聚类的操作。2. 在LDA主题模型下,一篇文章是怎么生成的在LDA主题模型中,文章的生成有三个要...
2020-02-09 20:37:37
2578
原创 LeetCode股票问题通解(二)
股票问题是动态规划中一类很恶心的题目,大家可以自己先去做一下,你一定会发现各个股票的问题解法都不一样,奇淫技巧特别多,让人觉得,我怎么想得到?再让我做一遍我也做不出来!那么今天,我将告诉大家一个通用的方法,一个方法,解决6道股票问题。同时也要感谢leetcode用户fun4LeetCode,本文参考:https://urlify.cn/zYbu2a首先,我们用一个三维数组来存储状态的组合:...
2020-02-08 17:06:09
263
原创 LeetCode高频题:动态规划(一)
应粉丝要求,今天我们开始动态规划的高频题,照例先带来几道简单题,让大家有一个小小的了解。53. 最大子序和题意:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。如下图这是一道典型的动态规划题,动态规划的核心就是状态转移方程。一般我们的dp数组中可以存放局部最优质值,也可以存放全局最优值。如果存放局部最优值,那么需要用一个额外的存储空...
2020-02-07 12:50:30
453
原创 LeetCode高频题:链表(五)
我们讲解的题目都是leetcode上经典的题目,而且我们的解答一定也是最简单最经典的。今天带来两道链表与树的经典题,把这两道放在一起讲是因为两者的思路是一致的。本期所用的链表的数据结构均如下:public class ListNode { int val; ListNode next; ListNode(int x) { val = x; }}public c...
2020-02-06 12:55:14
153
原创 LeetCode高频题:链表(四)
首先声明我们讲解的题目都是leetcode上经典的题目。本期所用的链表的数据结构均如下:public class ListNode { int val; ListNode next; ListNode(int x) { val = x; }}2. 两数相加题意:给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并...
2020-02-05 11:12:20
161
国科大模式识别与机器学习历年考题
2020-01-11
国科大高级人工智能历年考题.zip
2020-01-11
国科大自然语言处理历年考题.zip
2020-01-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅