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

【剑指offer:二叉搜索树的第k大节点】

**题目描述**:给定一棵二叉搜索树,请找出其中第 k 大的节点。<!-- more -->这题[LeetCode 230.二叉搜索树中第 K 小的元素](https://xxoo521.com/2020-03-05-kth-smallest-element-in-a-bst/)差不多。只不过按照题目要求,这.....

2020.03.15
42

【剑指offer:0~n-1中缺失的数字】二分查找的妙用

**题目描述**:一个长度为 n-1 的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围 0 ~ n-1 之内。在范围 0 ~ n-1 内的 n 个数字中有且只有一个数字不在该数组中,请找出这个数字。<!-- more -->## 解法:二分查找利用二分查找,整体流程是:- left 指向 0,r.....

2020.03.14
43

【剑指offer:在排序数组中查找数字】搜索左右边界:从两边向中间、二分查找

**题目描述**:统计一个数字在排序数组中出现的次数。<!-- more -->这题要解决的核心问题就是:搜索数字出现的左右边界。边界的差值,就是出现次数。## 解法 1: 从两边向中间思路比较简单:- 从数组左侧向右遍历,遇到目标数字 target,停止,记录下标 left- 从数组右侧向左遍历,遇.....

2020.03.13
44

【剑指offer:数组中的逆序对】暴力法、归并排序(JavaScript实现)

**题目描述**:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。<!-- more -->## 解法 1: 暴力法(TLE)直接双重循环,挨个检查是否为逆序对。代码实现比较简单:```javascript/** * @param {number[]} nums * @return {numb.....

2020.03.12
45

【剑指offer:两个链表的第一个公共节点】双解法:哈希表+快慢指针 内存击败100%(JavaScript)

**题目描述**:输入两个链表,找出它们的第一个公共节点。注意:- 如果两个链表没有交点,返回 null.- 在返回结果后,两个链表仍须保持原有的结构。- 可假定整个链表结构中没有循环。- 程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。<!-- more -->## 解法 1: .....

2020.03.12
46

【剑指offer:求礼物的最大价值】动态规划解法,内存击败100%,时间击败96.63%(JavaScript实现)

**题目描述**:在一个 m\*n 的棋盘(grid)的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?<!-- more -->## 解.....

2020.03.11
47

【剑指offer:第一个只出现一次的字符】简单易懂哈希表实现(JavaScript)

**题目描述**:在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。<!-- more -->## 解法:哈希表思路很简单。遍历两次字符串 s:- 第一次使用哈希表统计字符出现次数- 第二次检查字符出现次数是否为 1,若为 1,直接返回字符。```javascript// ac地址.....

2020.03.11
48

【剑指offer:最长不含重复字符的子字符串】滑动窗口(双指针)+优化改进思路

**题目描述**:请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。<!-- more -->## 题目分析留意最长子串和子序列不是一个概念。例如对“pwwkew”来说,最长子串是“wke”,“pwke”是其中一个子序列。在不考虑时间的情况下,直接暴力法对所有的子串进行检查。复杂度.....

2020.03.11
49

LeetCode 233.数字1的个数 - JavaScript

**题目描述**:给定一个整数 n,计算所有小于等于 n 的非负整数中数字 1 出现的个数。<!-- more -->## 题目分析当输入为 13 的时候,结果是 6。因为 1 在以下数字中:1、10、11、12、13,一共出现了 6 次。直接想到暴力法从 1 遍历到 n,并且通过取模运算计算每个数字中 1 .....

2020.03.10
50

LeetCode 264.丑数II - JavaScript

**题目描述**:编写一个程序,找出第 n 个丑数。丑数就是只包含质因数 2, 3, 5 的正整数。<!-- more -->## 解法 1: 动态规划因为丑数只包含质因数 2, 3, 5,所以对于下个丑数来说,一定是前面某个丑数乘 3、乘 4 或者乘 5 所得。准备三个指针 ptr2、ptr3、ptr5,它.....

2020.03.10