【Leetcode】142.环形链表 II

2019-08-30
阅读 2 分钟
1.8k
给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。

【Leetcode名企之路】141. 环形链表

2019-08-26
阅读 2 分钟
1.8k
为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。

【Leetcode】139.拆分词句

2019-08-14
阅读 4 分钟
1.7k
题目 给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。 说明: 拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1: {代码...} 示例 2: {代码...} 示例 3: {代码...} 思路分析 暴力搜索 这道题最开始我们想的肯定是每...

关于 MySQL 百万数据量的 count(*) 查询如何优化?

2019-07-31
阅读 3 分钟
11.5k
但是我的数据量比这个大很多,而对数据的准确性要求就不那么高。所以首先要明确需求。其他答案有的说了用缓存,有的答案对比了count(*)、count(1)的区别,都很好,但是我认为还是要看一下题主的场景。我根据我实际开发的经验总结如下几个方面,FYI。

【Leetcode】137.只出现一次的数字 II

2019-07-04
阅读 2 分钟
2.6k
题目 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例 1: {代码...} 示例 2: {代码...} 题解 根据上一道题目的经验,我们很明确的知道不能用数数字的办法去解。考虑位运算的...

【Leetcode】135.分发糖果

2019-07-01
阅读 2 分钟
2.2k
# 题目 老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。 你需要按照以下要求,帮助老师给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果。相邻的孩子中,评分高的孩子必须获得更多的糖果。那么这样下来,老师至少需要准备多少颗糖果呢? 示例 1: {代码...} 示例 2: {...

【Leetcode】130. 被包围的区域

2019-05-26
阅读 9 分钟
2.2k
题目 给定一个二维的矩阵,包含 'X' 和 'O'(字母 O)。 找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充。 示例: {代码...} 运行你的函数后,矩阵变为: {代码...} 解释: 被围绕的区间不会存在于边界上,换句话说,任何边界上的 'O' 都不会被填充为 'X'。 任何不在边界上,或不与边界上的 'O' 相连的...

【Leetcode】128.最长连续序列

2019-05-20
阅读 2 分钟
3k
这道题目最开始大家想的肯定是sort,然后计数计算最长序列。但是要求时间复杂度为:o(n),就不能用sort了。一般在leetcode中,对时间复杂度有要求,就用空间来换,对空间复杂度有要求,就用时间来换。

【Leetcode】120.三角形最小路径和

2019-05-12
阅读 1 分钟
2.9k
题目 给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。 例如,给定三角形: {代码...} 自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。 说明: 如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来解决这个问题,那么你的算法会很加分。 题解 这道题目和之前A过的杨辉...

【Leetcode】116. 填充同一层的兄弟节点2

2019-04-24
阅读 4 分钟
2.1k
struct Node { int val; Node *left; Node *right; Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。

【Leetcode】116. 填充同一层的兄弟节点

2019-04-21
阅读 4 分钟
1.8k
struct Node { int val; Node *left; Node *right; Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。

【Leetcode】114. 二叉树展开为链表

2019-04-15
阅读 2 分钟
3.6k
这算是比较经典的一道题目了, 博主面试快手的时候原题。最开始一想,觉得递归的求解不就好了,但是递归的时候发现需要注意一个地方就是:需要先递归右子树,然后记录下右子树展开完成之后的链表头。然后再递归的求解左子树,把左子树的最后一个链到右子树的链表头。基于这个,我们用一个pre指针来记录右子树的头结点。

【Leetcode】113. 路径总和II

2019-04-14
阅读 2 分钟
2.5k
题目 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。 说明: 叶子节点是指没有子节点的节点。 示例:给定如下二叉树,以及目标和 sum = 22, {代码...} 返回: {代码...} 题解 这道题目是上一道的延伸,但是需要记录下路径,返回回去。这就是一个典型的backtrack的题目了。我们用...

百度社招面试题——如何用Redis实现分布式锁

2019-04-10
阅读 4 分钟
8.9k
关于Redis实现分布式锁的问题,网络上很多,但是很多人的讨论基本就是把原来博主的贴过来,甚至很多面试官也是一知半解经不起推敲就来面候选人,最近结合我自己的学习和资料查阅,整理一下用Redis实现分布式锁的方法,欢迎评论、交流、讨论。

【Leetcode】125. 验证回文串

2019-04-09
阅读 1 分钟
1.8k
题目 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明:本题中,我们将空字符串定义为有效的回文串。 示例 1: {代码...} 示例 2: {代码...} 题解 这道题目就比较简单了,用两个指针一前一后,遇到不是字母的就直接忽略过就好了。可能对java的一些方法不太熟悉,注释说明一下: {...

【Leetcode】124. 二叉树中的最大路径和

2019-04-09
阅读 1 分钟
2.7k
题目 给定一个非空二叉树,返回其最大路径和。 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。 示例 1: 输入: [1,2,3] {代码...} 输出: 6示例 2: 输入: [-10,9,20,null,null,15,7] {代码...} 输出: 42 题解 这道题虽然是标记成hard难度的题目,但是我觉...

社招面试总结——算法题篇

2019-04-09
阅读 15 分钟
22.4k
蚂蚁中台-机器学习平台开发: 技术面通过, 被蚂蚁HR挂掉(脉脉上好多人遇到这种情况,一个是今年大环境不好,另一个,面试尽量不要赶上阿里财年年底,这算是一点tips吧)

【Leetcode】109.有序链表转换二叉搜索树

2019-03-17
阅读 2 分钟
2.8k
题目 给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。 示例: 给定的有序链表: [-10, -3, 0, 5, 9], 一个可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面这个高度平衡二叉搜索树: {代码...

【Leetcode】107. 二叉树的层次遍历 II

2019-03-15
阅读 2 分钟
3.5k
题目 给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 例如:给定二叉树 [3,9,20,null,null,15,7], {代码...} 返回其自底向上的层次遍历为: {代码...} 题解 利用层次遍历,层次遍历的时候进入下一层的时候记录一下当前队列中有几个元素。 {代码...} 用递...

Leetcode讲解视频(持续更新中...)

2019-03-10
阅读 1 分钟
6.1k
【Leetcode】146.LRU缓存机制【Leetcode】108.将有序数组转换为二叉搜索树【Leetcode】107.二叉树的层次遍历【Leetcode】106. 从中序与后序遍历序列构造二叉树【Leetcode】105. 从前序与中序遍历序列构造二叉树【Leetcode】101.镜像二叉树【Leetcode】100.相同的树

【Leetcode】106. 从中序与后序遍历序列构造二叉树2

2019-03-06
阅读 2 分钟
2.4k
题目 根据一棵树的中序遍历与后序遍历构造二叉树。 注意:你可以假设树中没有重复的元素。 例如,给出 中序遍历 inorder = [9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树: {代码...} 题解 根据前序和中序可以构造一颗二叉树,根据中序和后续也可以构建一颗二叉树。反正必须要有中序才能构建,因为没...

【Leetcode】105. 从前序与中序遍历序列构造二叉树

2019-03-04
阅读 2 分钟
3.5k
题目 根据一棵树的前序遍历与中序遍历构造二叉树。 注意:你可以假设树中没有重复的元素。 例如,给出 前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: {代码...} 题解 根据前序和中序可以构造一颗二叉树,根据中序和后续也可以构建一颗二叉树。反正必须要有中序才能构建,因为没...

【Leetcode】104. 二叉树的最大深度

2019-03-01
阅读 2 分钟
3.5k
题目 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例:给定二叉树 [3,9,20,null,null,15,7], {代码...} 返回它的最大深度 3 。 题解 求最大深度,和深度相关,我们很容易想到用层序遍历。每遍历一层,就深度加1, 怎么记录是第几...

【Leetcode】103. 二叉树的锯齿形层次遍历

2019-02-27
阅读 3 分钟
3.1k
这道题要求用z字型,就是要求知道深度。因为知道深度我们就可以根据深度的奇偶来判断如何打印。首先相到的就是层序遍历,然后记录是第几层。层序遍历用队列的代码我们已经很熟悉了。

【Leetcode】102. 二叉树的层次遍历

2019-02-26
阅读 3 分钟
1.8k
我们数据结构的书上教的层序遍历,就是利用一个队列,不断的把左子树和右子树入队。但是这个题目还要要求按照层输出。所以关键的问题是: 如何确定是在同一层的。我们很自然的想到:如果在入队之前,把上一层所有的节点出队,那么出队的这些节点就是上一层的列表。由于队列是先进先出的数据结构,所以这个列表是从左到右的。

【Leetcode】101. 对称二叉树

2019-02-25
阅读 2 分钟
3.6k
题目 给定一个二叉树,检查它是否是镜像对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 {代码...} 但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: {代码...} 题解 还记得我们上几次说过,二叉树的题目,大多数可以用递归解决。而递归主要确定两点: 递归的子问题是什么; 递归的结束条件是什么 这个题这两点...

【Leetcode】60. 第k个排列

2019-02-22
阅读 4 分钟
2.8k
题目 给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列。 按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下: "123" "132" "213" "231" "312" "321" 给定 n 和 k,返回第 k 个排列。 说明: 给定 n 的范围是 [1, 9]。给定 k 的范围是[1, n!]。示例 1: {代码...} 示例 2: {代码...} 题解 这道题还蛮有...

【Leetcode】75.颜色分类

2019-02-21
阅读 2 分钟
2.9k
作者: 码蹄疾毕业于哈尔滨工业大学。 小米广告第三代广告引擎的设计者、开发者; 负责小米应用商店、日历、开屏广告业务线研发; 主导小米广告引擎多个模块重构; 关注推荐、搜索、广告领域相关知识;

【Leetcode】100. 相同的树

2019-02-20
阅读 3 分钟
3.4k
大多数的二叉树题目都是用递归可以解的。所以当拿到二叉树的题目的时候,我们首先就是看看能拆解成哪些子问题。这个问题的子问题很简单,就是左子树,右子树都相等的二叉树是相同的二叉树。

【Leetcode】98. 验证二叉搜索树

2019-02-19
阅读 2 分钟
3k
题目 给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 示例 1: {代码...} 示例 2: {代码...} 题解 这道题目主要是利用二叉搜索树的一个性质:二叉搜索树...