首页
首页
沸点
课程
直播
活动
竞赛
商城
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
JavaScript 数据结构与算法
UOrb
创建于2021-05-11
订阅专栏
数据结构与算法
暂无订阅
共21篇文章
创建于2021-05-11
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
LeetCode:78.子集 | 刷题打卡
一、题目描述 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 1: 示例 2: 二、思路分
LeetCode: 146. LRU 缓存机制 | 刷题打卡
一、题目描述运用你所掌握的数据结构,设计和实现一个LRU (最近最少使用) 缓存机制。实现 LRUCache 类:LRUCache(int capacity) 以正整数作为容量 capacity 初始
大数相加 | 刷题打卡
一、题目描述给出两个很大的整数,求出两个整数之和。示例:二、思路分析首先我们来回想一下列竖式(也就是加、减、乘、除的计算过程):那么,我们为什么要使用列竖式来进行运算呢?因为对于这么大的整数进行相加,
LeetCode: 46.全排列 | 刷题打卡
一、题目描述给定一个 没有重复 数字的序列,返回其所有可能的全排列。示例:二、思路分析简单来说,就是根据给定的数组,进行所有情况的排列,且不能有重复元素。首先,进行所有情况的排列,那么很直接就可以想到
排序之堆排序 | 刷题打卡
一、题目描述使用堆排序对一个非有序数组进行升序的排序。示例:二、思路分析堆排序实际上就是利用,最大堆和最小堆的特性,来对数组进行排序。最大堆: 即代表堆顶的元属是该堆里面值最大的元属最小堆: 即代表堆
排序之归并排序 | 刷题打卡
一、题目描述使用归并排序对一个非有序数组进行升序的排序。示例:二、思路分析归并排序的思路主要就是两字:分、合。分: 简单来说就是把数组进行二分操作,把一个完整的数组均分成两个组数,然后再不断的对分出来
排序之快速排序 | 刷题打卡
一、题目描述对一个非有序数组进行升序的排序。示例:二、思路分析快速排序比冒泡排序和选择排序的性能都好,是一种可以在实际项目中应用的排序算法。从数组中任意选择一个基准;所有比基准小的元素放在基准的前面(
排序之选择排序 | 刷题打卡
对一个非有序数组进行升序的排序。 选择排序会找到数组中的最小值,并选中它将其放在第一位。 接着会找到第二小的值,并选中它将其放在第二位。 以此类推,执行 n - 1 论(最后一位不用轮询)。 选择排序实际上就是不断的寻找数组中最大或者最小的数并和当前循环开始位置的数进行交换。 …
排序之冒泡排序 | 刷题打卡
对一个非有序数组进行升序的排序。 冒泡排序,顾名思义就和水里的泡泡一样越往上就会越大。 依次比较两个相邻的元素,如果第一个比第二个大,则交换它们。 一轮交换下来后,可以保证最后一个数是最大的。 冒泡排序实际上就是不断的判断相邻的两个数的大小并且根据情况交换位置。 需要注意的是循…
LeetCode: 36.有效的数独|刷题打卡
判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。 上图是一个部分填充的有效的数独。 数独部分空格内…
LeetCode: 1663.具有给定数值的最小字符串|刷题打卡
小写字符 的 数值 是它在字母表中的位置(从 1 开始),因此 a 的数值为 1 ,b 的数值为 2 ,c 的数值为 3 ,以此类推。 字符串由若干小写字符组成,字符串的数值 为各字符的数值之和。例如,字符串 "abe" 的数值等于 1 + 2 + 5 = 8 。 给你两个整数…
LeetCode: 678.有效的括号字符串|刷题打卡
给定一个只包含三种字符的字符串:( ,) 和 *,写一个函数来检验这个字符串是否为有效字符串。有效字符串具有如下规则: 任何左括号 ( 必须有相应的右括号 )。 任何右括号 ) 必须有相应的左括号 ( 。 左括号 ( 必须在对应的右括号之前 )。 * 可以被视为单个右括号 ) …
LeetCode: 21.合并两个有序链表|刷题打卡
将两个升序链表合并为一个新的 升序 链表并返回。 新链表是通过拼接给定的两个链表的所有节点组成的。 两个升序的链表,自然而然的就能想到去比较它门链头的值,然后依次获取当前最小的节点组成一个新的的链表。 使用双指针变量两个升序链表,初始的时候指针 1 指向链表的表头,指针 2 指…
LeetCode: 509.斐波那契数|刷题打卡
斐波那契数,通常使用 F(n) 表示。 形成的序列成为 斐波那契数列。 该数列从 0 和 1 开始,后面的每一项数字都是前面两项数字的和。 给你 n ,请计算 F(n) 。 了解过斐波那契数列的,然后加上题目给出的公式基本上就知道怎么写了。 所以只要处理了边界情况即 0 的时候…
LeetCode: 215.数组中的第 K 个最大元素|刷题打卡
在未排序的数组中找到第 K 个最大的元素。 请注意,你需要找的是数组排序后的第 K 个最大的元素,而不是第 K 个不同的元素。 注: 你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度。 简单来说就是获取降序排序数组中下标为 k - 1 的值。 它这个第 k 个最大的元…
LeetCode: 94.二叉树的中序遍历|刷题打卡
给定一个二叉树,返回它的 中序 遍历。 这道题只要你了解树的中序遍历就可以直接做了,没有其他什么弯弯绕绕的东西。 递归版本非常的简单,只要了解中序遍历的特征基本上就能做出来。
LeetCode: 102.二叉树的层序遍历|刷题打卡
给定一个二叉树,请你返回按照其 层序遍历 的到的节点值。 注: 即逐层的,从左到右访问所有节点。 层序遍历实际上就是广度优先遍历。 需要注意的在遍历的时候需要记录当前节点所处的层级,方便将其添加到不同的数组当中。 方法 1: 在迭代的队列中添加表示层的标识,然后通过标识来生成数…
LeetCode: 104.二叉树的最大深度|刷题打卡
给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 注: 叶子节点是指没有子节点的节点。 求最大深度,那么自然会优先考虑深度优先遍历去做这道题目。 然后再深度优先遍历的过程中,记录每个节点所在的层级,找出最大的层级即可。 创建一个变量用来…
LeetCode: 141.环形链表|刷题打卡
给定一个链表,判断链表中是否有环。 如果链表中存在环,则返回 true 。 否则,返回 false 。 所以我们用一快一慢的两个指针遍历链表,如果指针能够相遇,那么链表就一定有环。 这个题有点像脑筋急转弯,只要想到如何去判断节点是否被二次读过或指针能二次相遇即可。
LeetCode: 206.反转链表|刷题打卡
反转一个单链表。 你可以迭代或递归反转链表。 如果一开始就考虑长链表的反转就很难。 只需要将节点 n+1 的 next 指向 n 即可。 实际上只需要不断的重复上述的 反转两个节点 的操作即可。 这道题其实很简单的,但是如果一开始就考虑长链表的转换的话就会很复杂甚至会懵,所以考…
下一页