全部文章all(224)
    简洁模式
31

【剑指offer:队列的最大值】使用双端队列来实现辅助队列

**题目描述**;请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数 max_value、push_back 和 pop_front 的均摊时间复杂度都是 O(1)。若队列为空,pop_front 和 max_value 需要返回 -1。<!-- more -->## 解法:辅助队列使.....

2020.03.28
32

《色,戒》的观影体验:下半身硬着,上半身哭着,以及那已被照亮的柔情

> 本文来自[心谭博客](https://xxoo521.com/)。经常写写技术,偶尔记录电影和生活终于刷完高清完整版的《色,戒》了。梁朝伟和汤维是真的为艺术献身。相较于噱头很大的情爱戏部分,最让我印象深刻的是 1 小时 5 分前后,王佳芝(女主)的奉献以及希望突然落空的崩溃,所有相关的人都在极力掩饰。其实.....

2020.03.28
33

【LeetCode 239.滑动窗口最大值】三种解法:暴力法、动态规划和双端队列(JavaScript实现)

**题目描述**:给定一个数组 nums,有一个大小为  k  的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k  个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。示例:```输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,.....

2020.03.27
34

【剑指offer:和为s的连续正数序列】巧用快慢指针

**题目描述**:输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。**示例**:```输入:target = 9输出:[[2,3,4],[4,5]]```<!-- more -->## 解法:快慢指针和.....

2020.03.26
35

【剑指offer:和为s的两个数字】双指针

**题目描述**:输入一个递增排序的数组和一个数字 s,在数组中查找两个数,使得它们的和正好是 s。如果有多对数字的和等于 s,则输出任意一对即可。**示例**:```输入:nums = [2,7,11,15], target = 9输出:[2,7] 或者 [7,2]```<!-- more -->## 解法.....

2020.03.26
36

【剑指offer:数组中数字出现的次数I】使用异或运算来分组(JavaScript实现)

**题目描述**:一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是 O(n),空间复杂度是 O(1)。<!-- more -->## 解法:位运算这题和下面两题类似,要想 O(1) 的空间复杂度,就得用位运算:- [【LeetCode 1.....

2020.03.25
37

【LeetCode 137.只出现一次的数字II】三种解法:哈希表、数学技巧和位运算(JavaScript实现)

**题目描述**:给定一个**非空**整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次。找出那个只出现了一次的元素。**说明**:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?**提示**:可以和[《【LeetCode 136.只出现一次的数字 I】巧用异或运算》](https.....

2020.03.25
38

【LeetCode 136.只出现一次的数字I】巧用异或运算

**题目描述**:给定一个**非空**整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。**说明**:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?<!-- more -->## 解法:位运算题目提到了某个元素出现 1 次,其他都是 2 次。这题利用“.....

2020.03.25
39

【LeetCode 110.平衡二叉树】两种递归实现:自顶向下、自底向上

**题目描述**:给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1。<!-- more -->## 解法 1: 自顶向下根绝平衡二叉树的定义,可以递归比较每个节点的左右子树的高度差,是否超过 1。如果所有节点都满足条件,.....

2020.03.23
40

【LeetCode 104.二叉树的最大深度】双解法:递归+非递归

**题目描述**:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。<!-- more -->## 解法 1: 递归递归的写法非常直观。对于一棵二叉树来说,它的高度等于左右子树的高度最大值,加上 1。代码实现如下:```javascr.....

2020.03.22