我的个人博客(xxoo521.com)已上线,不定期持续更新精品文章,点击查看
心谭小站

心谭小站

专注前端与算法,公众号「心谭博客」

随笔分类 -  剑指Offer·JS精选版

摘要:题目描述 :给定一个数组 和滑动窗口的大小 ,请找出所有滑动窗口里的最大值。 示例 : 解法 1:暴力法 这题其实暴力法时间效率也很高,直接移动这个滑动窗口,每次统计窗口中的最大值即可。 代码实现: 由于每个元素只有 1 次机会进出双端队列,所以时间复杂度是O(N)。 更多资料 整理不易,若对您 阅读全文
posted @ 2020-04-09 10:24 心谭小站 阅读(397) 评论(0) 推荐(0) 编辑
摘要:题目描述 :在一个数组 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。 这题和 "《LeetCode 137.只出现一次的数字 II》" 一样。 解法 1: 最直观的哈希表 解决思路很简单,直接遍历一边数组,然后统计每个数字的出现次数,存入哈希表中。 然后再遍历哈希表 阅读全文
posted @ 2020-04-09 10:07 心谭小站 阅读(282) 评论(0) 推荐(0) 编辑
摘要:题目描述 :输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。 解法 1: 递归 递归的写法非常直观。对于一棵二叉树来说,它的高度等于左右子树的高度最大值,加上 1。 代码实现如下: 解法 2: 层序遍历 按照二叉树的“层 阅读全文
posted @ 2020-04-09 10:05 心谭小站 阅读(498) 评论(0) 推荐(0) 编辑
摘要:题目描述 :在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。 解法 1: 暴力法(TLE) 直接双重循环,挨个检查是否为逆序对。代码实现比较简单: 时间复杂度是O(N2)。在 leetcode 上会 TLE,无法通过( 阅读全文
posted @ 2020-04-07 22:41 心谭小站 阅读(336) 评论(0) 推荐(0) 编辑
摘要:题目描述 :输入两个链表,找出它们的第一个公共节点。 解法 1: 遍历+哈希表记录 比较容易想到的思路: 开辟哈希表 map。key 是节点,value 是 boolean,代表节点是否出现过 对 list1 进行遍历,设置 对 list2 进行遍历,如果节点在 map 中出现过,那么说明这是两个链 阅读全文
posted @ 2020-04-07 22:39 心谭小站 阅读(253) 评论(0) 推荐(0) 编辑
摘要:题目描述 :在一个 m n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物? 解法:动态规划 声明状态数组 是一个 m\ 阅读全文
posted @ 2020-04-06 23:12 心谭小站 阅读(205) 评论(0) 推荐(0) 编辑
摘要:题目描述 :请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。 题目分析 留意最长子串和子序列不是一个概念。例如对“pwwkew”来说,最长子串是“wke”,“pwke”是其中一个子序列。 在不考虑时间的情况下,直接暴力法对所有的子串进行检查。复杂度是O(N3),会 阅读全文
posted @ 2020-04-06 23:10 心谭小站 阅读(510) 评论(0) 推荐(0) 编辑
摘要:题目描述 :我们把只包含因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。 解法 1: 动态规划 因为丑数只包含质因数 2, 3, 5,所以对于下个丑数来说,一定是前面某个丑数乘 3、乘 4 或者乘 5 所得。 准备三个指针 ptr2、ptr3、ptr 阅读全文
posted @ 2020-04-06 23:09 心谭小站 阅读(447) 评论(0) 推荐(0) 编辑
摘要:虽然这题在 leetcode 上标注的是「简单」难度,但是解法有 4 种,并且都非常具有代表性。比较容易想到的是基础的动态规划法。 解法 1:动态规划 定义状态数组 的含义:数组中元素下标为 的连续子数组最大和。 状态转移的过程如下: 初始情况: 若 ,那么 若 `nums[i] 0) { dp[i 阅读全文
posted @ 2020-04-06 23:05 心谭小站 阅读(297) 评论(0) 推荐(0) 编辑
摘要:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列 1,2,3,4,5 是某栈的压入顺序,序列 4,5,3,2,1 是该压栈序列对应的一个弹出序列,但 4,3,5,1,2 就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的) 阅读全文
posted @ 2020-02-03 16:26 心谭小站 阅读(200) 评论(0) 推荐(0) 编辑
摘要:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下 4 X 4 矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字 1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. 阅读全文
posted @ 2020-02-03 16:25 心谭小站 阅读(455) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示