【算法与数据结构】
文章平均质量分 50
不一样的学习思路
余光、
一旦走出舒适区,你内心的痛点才是促使你前行的动力
2022年重新出发
展开
-
【剑指Offer打卡】48. 最长不含重复字符的子字符串
剑指 Offer 48.最长不含重复字符的子字符串JavaScript剑指Offer题解🚀包含数组、对象、链表、堆栈、树等经典题型☕️每天一道,轻松不累💬详细的题目解析,收藏方便阅读🙏在线star地址在线阅读地址在线阅读地址请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。示例 1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无原创 2022-03-11 19:35:45 · 2170 阅读 · 0 评论 -
【剑指Offer打卡】16. 数值的整数次方
剑指 Offer 42.连续子数组的最大和JavaScript剑指Offer题解🚀包含数组、对象、链表、堆栈、树等经典题型☕️每天一道,轻松不累💬详细的题目解析,收藏方便阅读🙏在线star地址在线阅读地址在线阅读地址题目描述实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。不得使用库函数,同时不需要考虑大数问题。示例 1:输入:x = 2.00000, n = 10输出:1024.00000示例 2:输入:x = 2.10000, n = 3输出:9.原创 2022-03-10 19:17:23 · 484 阅读 · 0 评论 -
【剑指Offer打卡】56-II. 数组中数字出现的次数 II
剑指 Offer56-II. 数组中数字出现的次数 IIJavaScript剑指Offer题解????包含数组、对象、链表、堆栈、树等经典题型☕️每天一道,轻松不累????详细的题目解析,收藏方便阅读????在线star地址在线阅读地址在线阅读地址题目描述在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。示例 1:输入:nums = [3,4,3,3]输出:4示例 2:输入:nums = [9,1,7,9,7,9,7]输出原创 2021-11-24 21:42:53 · 521 阅读 · 0 评论 -
【剑指Offer打卡】42.连续子数组的最大和
剑指 Offer 64. 求1+2+…+nJavaScript剑指Offer题解????包含数组、对象、链表、堆栈、树等经典题型☕️每天一道,轻松不累????详细的题目解析,收藏方便阅读????在线star地址在线阅读地址在线阅读地址题目描述求 1+2+…+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。示例 1:输入: n = 3输出: 6示例 2:输入: n = 9输出: 45题解一:递归原创 2021-11-23 21:53:21 · 463 阅读 · 0 评论 -
【剑指Offer打卡】32-1.从上到下打印二叉树
剑指 Offer 32-1.从上到下打印二叉树JavaScript剑指Offer题解????包含数组、对象、链表、堆栈、树等经典题型☕️每天一道,轻松不累????详细的题目解析,收藏方便阅读????在线star地址在线阅读地址在线阅读地址题目描述从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回:[3,9原创 2021-11-08 19:48:56 · 210 阅读 · 0 评论 -
【剑指Offer打卡】30.包含min函数的栈
剑指 Offer 30. 包含min函数的栈JavaScript剑指Offer题解????包含数组、对象、链表、堆栈、树等经典题型☕️每天一道,轻松不累????详细的题目解析,收藏方便阅读????在线star地址在线阅读地址在线阅读地址题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。示例:const minStack = new MinStack();minStack.pu原创 2021-11-05 23:00:00 · 170 阅读 · 0 评论 -
【剑指Offer打卡】29.顺时针打印矩阵
剑指 Offer 29. 顺时针打印矩阵JavaScript剑指Offer题解????包含数组、对象、链表、堆栈、树等经典题型☕️每天一道,轻松不累????详细的题目解析,收藏方便阅读????在线star地址在线阅读地址在线阅读地址题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]示例 2:输入:matrix = [[1,2,3原创 2021-11-05 22:45:00 · 502 阅读 · 0 评论 -
【剑指Offer打卡】28.对称的二叉树
剑指 Offer 28. 对称的二叉树JavaScript剑指Offer题解????包含数组、对象、链表、堆栈、树等经典题型☕️每天一道,轻松不累????详细的题目解析,收藏方便阅读????在线star地址在线阅读地址在线阅读地址题目描述请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。1/ 2 2/ \ / 3 4 4 3但是下面这个 [1,2,2,null,3原创 2021-11-02 19:49:55 · 209 阅读 · 0 评论 -
【剑指Offer打卡】27.二叉树的镜像
剑指 Offer 27. 二叉树的镜像JavaScript剑指Offer题解????包含数组、对象、链表、堆栈、树等经典题型☕️每天一道,轻松不累????详细的题目解析,收藏方便阅读????在线star地址在线阅读地址在线阅读地址题目描述请完成一个函数,输入一个二叉树,该函数输出它的镜像。示例 1:输入:root = [4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]题解:递归思路:将当前节点的左子树镜像(递归),右子树镜像(递归)再将当前节点的左右子原创 2021-11-02 19:48:16 · 340 阅读 · 0 评论 -
【剑指Offer打卡】26.树的子结构
剑指 Offer 26. 树的子结构题目描述输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构, 即 A中有出现和B相同的结构和节点值。例如:给定的树 A: 3 / \ 4 5 / \ 1 2给定的树 B: 4 / 1返回 true,因为 B 与 A 的一个子树拥有相同的结构和节点值。示例 1:输入:A = [1,2,3], B = [3,1]输出:false示例 2:输入:A =原创 2021-11-01 18:42:06 · 286 阅读 · 0 评论 -
【剑指Offer打卡】25.合并两个排序的链表
剑指 Offer 25. 合并两个排序的链表输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。示例1:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4限制:0 <= 链表长度 <= 1000注意:本题与主站 21 题相同:https://leetcode-cn.com/problems/merge-two-sorted-lists/题解一:暴力遍历思路:将两个链表的数原创 2021-11-01 18:40:37 · 199 阅读 · 0 评论 -
【剑指Offer打卡】24.反转链表
剑指Offer 24.反转链表JavaScript剑指Offer题解????包含数组、对象、链表、堆栈、树等经典题型☕️每天一道,轻松不累????详细的题目解析,收藏方便阅读????在线star地址在线阅读地址在线阅读地址题目描述定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL题解一:遍历思路原创 2021-10-29 22:15:00 · 157 阅读 · 0 评论 -
【剑指Offer打卡】22. 链表中倒数第k个节点
剑指Offer 22. 链表中倒数第k个节点JavaScript剑指Offer题解????包含数组、对象、链表、堆栈、树等经典题型☕️每天一道,轻松不累????详细的题目解析,收藏方便阅读????在线star地址在线阅读地址在线阅读地址题目描述输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节原创 2021-10-28 20:05:47 · 249 阅读 · 0 评论 -
【剑指Offer打卡】18. 删除链表的节点
剑指Offer18. 删除链表的节点JavaScript剑指Offer题解????包含数组、对象、链表、堆栈、树等经典题型☕️每天一道,轻松不累????详细的题目解析,收藏方便阅读????在线star地址在线阅读地址在线阅读地址题目描述给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。注意:此题对比原题有改动示例 1:输入: head = [4,5,1,9], val = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第原创 2021-10-28 20:01:24 · 252 阅读 · 0 评论 -
【剑指Offer打卡】32-3. 从上到下打印二叉树III
剑指Offer32-3. 从上到下打印二叉树IIIJavaScript剑指Offer题解????包含数组、对象、链表、堆栈、树等经典题型☕️每天一道,轻松不累????详细的题目解析,收藏方便阅读????在线star地址在线阅读地址在线阅读地址题目描述请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。例如:给定二叉树: [3,9,20,null,null,15,7], 3原创 2021-10-27 19:20:17 · 535 阅读 · 0 评论 -
【剑指Offer打卡】32-2. 从上到下打印二叉树II
剑指Offer32-2. 从上到下打印二叉树IIJavaScript剑指Offer题解????包含数组、对象、链表、堆栈、树等经典题型☕️每天一道,轻松不累????详细的题目解析,收藏方便阅读在线阅读地址在线阅读地址题目描述从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。例如:给定二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3]原创 2021-10-27 19:15:36 · 277 阅读 · 0 评论 -
【剑指Offer打卡】32-1. 从上到下打印二叉树
剑指Offer32-1. 从上到下打印二叉树JavaScript剑指Offer题解????包含数组、对象、链表、堆栈、树等经典题型☕️每天一道,轻松不累????详细的题目解析,收藏方便阅读在线阅读地址在线阅读地址题目描述从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回:[3,9,20,15,7]题解一原创 2021-10-27 19:11:10 · 257 阅读 · 0 评论 -
【剑指Offer打卡】21. 调整数组顺序使奇数位于偶数前面
剑指Offer21. 调整数组顺序使奇数位于偶数前面JavaScript剑指Offer题解????包含数组、对象、链表、堆栈、树等经典题型☕️每天一道,轻松不累????详细的题目解析,收藏方便阅读在线阅读地址在线阅读地址题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。示例:输入:nums = [1,2,3,4]输出:[1,3,2,4] 注:[3,1,2,4] 也是正确的答案之一。题解一:遍历思路原创 2021-10-25 20:41:56 · 118 阅读 · 0 评论 -
【剑指Offer打卡】11.旋转数组的最小数字
剑指Offer(11)旋转数组的最小数字JavaScript剑指Offer题解????包含数组、对象、链表、堆栈、树等经典题型☕️每天一道,轻松不累????详细的题目解析,收藏方便阅读在线阅读地址在线阅读地址题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。示例 1:输入:[3,4,5,1,2]输出:1原创 2021-10-24 08:00:00 · 162 阅读 · 0 评论 -
【剑指Offer打卡】10-2.青蛙跳台阶问题
剑指Offer(10-2)青蛙跳台阶问题JavaScript剑指Offer题解????包含数组、对象、链表、堆栈、树等经典题型☕️每天一道,轻松不累????详细的题目解析,收藏方便阅读在线阅读地址在线阅读地址题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例 1:输入:n = 2输出:2示例 2:输入:n = 7原创 2021-10-23 08:00:00 · 138 阅读 · 0 评论 -
【剑指Offer打卡】10-1.斐波那契数列
剑指Offer(10-1)用两个栈实现队列JavaScript剑指Offer题解????包含数组、对象、链表、堆栈、树等经典题型☕️每天一道,轻松不累????详细的题目解析,收藏方便阅读在线阅读地址在线阅读地址题目描述写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,原创 2021-10-22 20:45:00 · 250 阅读 · 0 评论 -
【剑指Offer打卡】09.用两个栈实现队列
剑指Offer(9)用两个栈实现队列JavaScript剑指Offer题解????包含数组、对象、链表、堆栈、树等经典题型☕️每天一道,轻松不累????详细的题目解析,收藏方便阅读在线阅读地址在线阅读地址题目描述用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )示例 1:输入:["CQueue","appendTail"原创 2021-10-21 19:17:30 · 185 阅读 · 0 评论 -
【剑指Offer打卡】07.重建二叉树
剑指 Offer 07. 重建二叉树JavaScript剑指Offer题解????包含数组、对象、链表、堆栈、树等经典题型☕️每天一道,轻松不累????详细的题目解析,收藏方便阅读在线阅读地址在线阅读地址题目描述输入某二叉树的前序遍历和中序遍历的结果,请构建该二叉树并返回其根节点。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。示例 1:Input: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]Output: [3,9,原创 2021-10-20 20:01:18 · 180 阅读 · 0 评论 -
【剑指Offer打卡】06.从尾到头打印链表
剑指Offer-06 从尾到头打印链表JavaScript剑指Offer题解????包含数组、对象、链表、堆栈、树等经典题型☕️每天一道,轻松不累????详细的题目解析,收藏方便阅读在线阅读地址在线阅读地址题目描述输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]题解一:遍历复杂度时间复杂度O(n)空间复杂度O(n)代码/** * Definition for singly-lin原创 2021-10-20 19:30:00 · 195 阅读 · 10 评论 -
【剑指Offer打卡】05.替换空格
剑指Offer-04 二维数组中的查找JavaScript剑指Offer题解????包含数组、对象、链表、堆栈、树等经典题型☕️每天一道,轻松不累????详细的题目解析,收藏方便阅读在线阅读地址在线阅读地址题目描述请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = "We are happy."输出:"We%20are%20happy."限制:0 <= s 的长度 <= 10000题解一:数组方法复杂度O(m+n)思路原创 2021-10-19 20:18:38 · 175 阅读 · 8 评论 -
【剑指Offer打卡】04.二维数组中的查找
剑指Offer-04 二维数组中的查找JavaScript剑指Offer题解????包含数组、对象、链表、堆栈、树等经典题型☕️每天一道,轻松不累????详细的题目解析,收藏方便阅读在线阅读地址在线阅读地址题目描述在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15]原创 2021-10-15 20:00:00 · 244 阅读 · 0 评论 -
【剑指Offer打卡】03. 数组中重复的数字
剑指Offer-03 数组中重复的数字JavaScript剑指Offer题解????包含数组、对象、链表、堆栈、树等经典题型☕️每天一道,轻松不累????详细的题目解析,收藏方便阅读在线阅读地址在线阅读地址题目描述在一个长度为n的数组``nums`里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3原创 2021-10-13 23:57:15 · 311 阅读 · 0 评论 -
数据结构专题(一)二分法,寻找解题思路看这一篇就够了
和大家一起掌握二分法,本篇文章提供了三个模版,以及大量配套练习题,帮助大家清晰的认识二分法,逐渐了解、掌握相关问题。原创 2020-12-29 19:02:31 · 28956 阅读 · 61 评论 -
LeetCode题解:矩阵中战斗力最弱的 K 行
矩阵中战斗力最弱的 K 行一、题目给你一个大小为 m * n 的矩阵 mat,矩阵由若干军人和平民组成,分别用 1 和 0 表示。请你返回矩阵中战斗力最弱的 k 行的索引,按从最弱到最强排序。如果第 i 行的军人数量少于第 j 行,或者两行军人数量相同但 i 小于 j,那么我们认为第 i 行的战斗力比第 j 行弱。军人 总是 排在一行中的靠前位置,也就是说 1 总是出现在 0 之前。示例:输入:mat =[[1,1,0,0,0],[1,1,1,1,0],[1,0,0,0原创 2020-12-21 19:06:44 · 3013 阅读 · 3 评论 -
LeetCode题解:统计有序矩阵中的负数
统计有序矩阵中的负数一、题目给你一个 m * n 的矩阵 grid,矩阵中的元素无论是按行还是按列,都以非递增顺序排列。请你统计并返回 grid 中 负数 的数目。示例:输入:grid = [[4,3,2,-1],[3,2,1,-1],[1,1,-1,-2],[-1,-1,-2,-3]]输出:8解释:矩阵中共有 8 个负数。二、题解/** * @param {number[][]} grid * @return {number} */var countNegatives原创 2020-12-21 19:05:32 · 1281 阅读 · 0 评论 -
LeetCode题解:寻找比目标字母大的最小字母
寻找比目标字母大的最小字母一、题目给你一个排序后的字符列表 letters ,列表中只包含小写英文字母。另给出一个目标字母 target,请你寻找在这一有序列表里比目标字母大的最小字母。在比较时,字母是依序循环出现的。举个例子:如果目标字母 target = ‘z’ 并且字符列表为 letters = [‘a’, ‘b’],则答案返回 ‘a’示例:输入:letters = ["c", "f", "j"]target = "a"输出: "c"输入:letters = ["c", "f"原创 2020-12-21 19:03:46 · 1183 阅读 · 0 评论 -
LeetCode题解:有效的完全平方数
有效的完全平方数一、题目给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False。说明:不要使用任何内置的库函数,如 sqrt。示例 1:输入:16输出:True示例 2:输入:14输出:False题解这道题是典型的模版I分析思路在有序的“数组”中,查找指定的元素每次排除一般的查找空间/** * @param {number} num * @return {boolean} */var isPerfectSqu原创 2020-12-21 19:01:43 · 1211 阅读 · 0 评论 -
LeetCode题解:pow(x, n)
pow(x, n)一、题目实现 pow(x, n) ,即计算 x 的 n 次幂函数。示例 1:输入: 2.00000, 10输出: 1024.00000示例 2:输入: 2.00000, -2输出: 0.25000解释: 2-2 = 1/22 = 1/4 = 0.25题解解题思路要判断 n 的正负,以确定我们的底是 x 还是 1/x经过分析 x^9 = x^4 * x^4 * x = (x^2 * x^2) * (x^2 * x^2) * x判断 n 的奇偶性,已确定是原创 2020-12-21 19:00:23 · 4790 阅读 · 5 评论 -
LeetCode题解:环形链表
环形链表给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。解法一var hasCycle = function(head) { var setBox = new Set() while(head != null){ if(setB...原创 2019-12-30 18:48:04 · 453 阅读 · 0 评论 -
LeetCode题解:142.环形链表II
设计链表一、LeetCode题解瞧一瞧~博健的LeetCode题解:Gitbook版本传送门博健的LeetCode题解:CSDN传送门前端进阶笔记:Gitbook传送门二、算法题题目给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。如果有环,则确定它的入口位置。思路第一阶段,我们先确定当前链表是否存在环第二阶段,如果存在环,我们要确定入口的...原创 2020-05-06 17:09:50 · 1433 阅读 · 0 评论 -
LeetCode题解:两数之和 II - 输入有序数组
两数之和 II - 输入有序数组题干给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。返回的下标值(index1 和 index2)不是从零开始的。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例:输入: numbers = [2, ...原创 2019-12-31 11:50:59 · 618 阅读 · 0 评论 -
LeetCode题解:找到 K 个最接近的元素
本文是`二分查找-模版III` 的第最后一题,我会在之后将二分法的常见问题整理成完成的文档,我们一起加油~原创 2020-12-17 18:42:28 · 3573 阅读 · 4 评论 -
LeetCode题解:在排序数组中查找元素的第一个和最后一个位置
本文是二分查找-模版III 的第一题,后面的几道题的也算是本模版的微调版,加油~原创 2020-12-17 18:38:53 · 3538 阅读 · 3 评论 -
LeetCode题解:寻找旋转排序数组中的最小值
本文是二分查找-模版 II 的最后一题,接下来我们将面对更大的挑战,加油~原创 2020-12-16 18:49:16 · 3236 阅读 · 6 评论 -
LeetCode题解:寻找峰值
本文是二分查找-模版 II 的第二题,你可能意识到了,相对应的 leetcode 给他们标出中等的难度,加油!原创 2020-12-15 09:48:40 · 4850 阅读 · 6 评论