首页
首页
沸点
课程
直播
活动
竞赛
商城
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
数据结构+算法
Forlogen
创建于2021-07-05
订阅专栏
有关数据结构和算法的基础介绍,以及LeetCode相关题目
等 1 人订阅
共204篇文章
创建于2021-07-05
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
1541 - 平衡括号字符串的最少插入次数
给你一个括号字符串 s ,它只包含字符 '(' 和 ')' 。任何左括号 '(' 必须对应两个连续的右括号 '))' 。左括号 '(' 必须在对应的连续两个右括号 '))' 之前。比方说 "())", "())(())))" 和 "(())())))" 都是平衡的, ")()",...
921 - 使括号有效的最少添加 - python
给定一个由 ‘(’ 和 ‘)’ 括号组成的字符串 S,我们需要添加最少的括号( ‘(’ 或是 ‘)’,可以在任何位置),以使得到的括号字符串有效。它是一个空字符串,或者它可以被写成 AB (A 与 B 连接), 其中 A 和 B 都是有效字符串,或者它可以被写作 (A),其中 A...
剑指offer 29 + LeetCode 54 - 顺时针打印矩阵 - Python
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。0 <= matrix.length <= 1000 <= matrix[i].根据题目的描述可知,这里需要完成的就是顺时针打印矩阵元素的问题。因此,可以使用[0, 1]、[1, 0] 、[0, -1] [-1, 0]...
剑指offer 68 -Ⅰ- 二叉搜索树的最近公共祖先 - Python
给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。解释: 节点 2 和节点 8 的最...
剑指offer 28 - 对称的二叉树 - Python
请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。如果这里将子树中的左右子树分别看作是两棵树,判断它们是否对称,相当于判断第一棵树的左子树是否和另一棵树的右子树相同;第一棵树的右子...
剑指Offer 53 - 0~n-1中缺失的数字 - Python
0~n−1之内。n个数字中有且只有一个数字不在该数组中,请找出这个数字。根据题意可知,数字中所有的数字都在[0, n-1]内。因此,首先构建数组包含0~n,然后遍历数组找到那个不在给定数组中的数字即可。
剑指Offer 18 - 删除链表的节点 - Python
给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.解释: 给定你链表中值为 1 的第三个节点,那么在调用了你的函数之后,该链表应...
剑指offer 17 - 打印从1到最大的n位数 - Pyhon
输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。r.
剑指offer-矩形覆盖 - Python
我们可以用2×12×1的小矩形横着或者竖着去覆盖更大的矩形。res.
剑指offer 10Ⅱ - 青蛙跳台阶问题 - python
一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。
[动态规划] - 300 -最长上升子序列 - Python + Java
给定一个无序的整数数组,找到其中最长上升子序列的长度。解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。O(n2) 。要找无序数组中的最长上升子序列,相当于找所有的上升子序列中最长的那个。t = r[...
[简单题] -- 190 - 191 - 170 - 172 - Java + Python
190. 颠倒二进制位172. 阶乘后的零191. 位1的个数170. 两数之和 III - 数据结构设计69. 190. 颠倒给定的 32 位无符号整数的二进制位。因此返回 964176192,其二进制表示形式为 00111001011110000010100101000000...
146 -- LRU缓存机制 - Java + Python
运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get和 写入数据 put 。获取数据get(key) - 如果关键字 (key) 存在于缓存中,则获取关键字的值(总是正数),否则返回 -1。写入数据 put(key, ...
[动态规划] -- 322 - 零钱兑换 - Java
给定不同面额的硬币coins和一个总金额amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。题目要求根据给定的总金额amount,从不同面值硬币中进行组合,最终找到能凑到amount所需的最少硬币的个数。我们无法直...
36 -- 有效的数独 - Python
判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。上图是一个部分填充的有效的数独。数独部分空格内已填入了数字,空白格用 ‘.’ 表示。["5","3",".",".","7",".",".",".",".["6",".",".","1","9"...
二维场景下的回溯问题 -- N皇后 + 数独
1. N皇后1.1 题目描述1.2. 数独(Sudoku)2.1 问题描述2.1. 1.n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。例如,上图为 8 皇后问题的一种解法。给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。...
[回溯法] -- 90 子集 -- Python + Java
给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。题目给定的数组中会包含重复的数字,如果简单的对数组求所有的排列,会发现结果集中的大小会超过正确结果集的大小。res.append(sorted(track).track....
[回溯法] -- 78 - 子集 - Java + Python
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。前面有关组合总和类型的题目需要从给定的数组中找到集合,只是多加了一些限制条件,如长度等于给定的k,或是集合元素之和等于给定的n。而根据本题题目的描述可知,它需要我们找到给定数...
[回溯法] -- 77 组合题解 - Java + Python
给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。做过了前面关于全排列和组合总和的问题,这道题相比而言就更简单了。选择的过程中也不需要额外的剪枝操作,只需要按照一般回溯法的思路解题即可。results.forEach(System.if (track.re...
下一页