首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
数据结构+算法
Forlogen
创建于2021-07-05
订阅专栏
有关数据结构和算法的基础介绍,以及LeetCode相关题目
等 1 人订阅
共204篇文章
创建于2021-07-05
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
[回溯法] -- 216 - 组合总和Ⅲ - Java + Python
找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。这道题和前面系列的题原理上依然逃不出回溯法的套路,不同之处在于要求的结果不同。解集中的结果不仅要求之和等于给定的n,而且每个结果所包含的元素个数等于k。所以,我们需...
[回溯法] -- 40 - 组合总和Ⅱ - Java +Python
给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。这道题和[回溯法] – 39 - 组合总和 - Python + Java原理上是...
[回溯法] -- 39 - 组合总和 - Java + Python
给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。 解集不能包含重复的组合。1 ...
[回溯法] -- 52 - N皇后Ⅱ - Java
n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。例如,上图为 8 皇后问题的一种解法。给定一个整数 n,返回 n 皇后不同的解决方案的数量。解释: 4 皇后问题存在如下两个不同的解法。[".Q.."..."Q..."..Q.[".....
117 - 填充每个节点的下一个右侧节点指针 II -python
填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。你只能使用常量级额外空间。使用递归解题也符合要求,本题中递归程序占用的栈空间不算做额外的空间复杂度。...
摩尔投票法
摩尔投票法的基本思想很简单,在每一轮投票过程中,从数组中找出一对不同的元素,将其从数组中删除。这样不断的删除直到无法再进行投票,如果数组为空,则没有任何元素出现的次数超过该数组长度的一半。如果只存在一种元素,那么这个元素则可能为目标元素。想一想也好理解,如果数组中有个元素个数多于...
169 - 多数元素 - python
给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。题目要求返回出现次数大于⌊ n/2 ⌋ 的元素,这里需要向下取整,并使用Counter()统计数组中元素及其出现的次数...
[双指针法]167 - 两数之和 II - 输入有序数组 - python + Java
给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。返回的下标值(index1 和 index2)不是从零开始的。你可以假设每个输入只对应唯一的答案,而且你...
160 -相交链表 - python
编写一个程序,找到两个单链表相交的起始节点。在节点 c1 开始相交。输入解释:相交节点的值为 8 (注意,如果两个列表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,0,1,8,4,5]。在 A 中,相交节点前有 2 个节点;在...
176 - 第二高的薪水 - SQL
SQL架构:编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) 。例如上述 Employee 表,SQL查询应该返回 200 作为第二高的薪水。如果不存在第二高的薪水,那么查询应返回 null。题目要求执行SQL语句返回第二高的薪水,如果不存在则返回...
175 -组合两个表- SQL
晚上准备做几道题。打开Leetcode发现怎么还有SQL的题……这道题要求最后执行SQL语句后得到的信息有FirstName, LastName, City, State,其中前两个在表Person中,后两个在表Address中,两个表的联系是PersonId,因此肯定要用到表的...
6 - Z字形变换 - python
将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESIIGEDHN"。return "".
5 - 最长回文字串 - python + Java
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。注意: "aba" 也是一个有效答案。根据回文串的定义可知,单个字符一定是回文串,两个相同的字符一定是回文串,如果在回文串的两端加上相同的字符那么得到的结果必定也是回文串。因此,可以从内往外逐...
49 - 字母异位词分组 - python + Java
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。所有输入均为小写字母不考虑答案输出的顺序。题目要求将字母异位词分组,即将由相同字母组成但排序不同的词分到同一组中。判断两个词组成的字符是否都相同,我们可以使用sorted()将单词按字典序排列后...
48 - 旋转图像 - python + Java
将图像顺时针旋转 90 度。说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。题目要求将图像顺时针旋转90度,最后返回旋转后的结果。这里图像表示为矩阵的形式,那么返回的就是旋转90度后的矩阵。Do not return anythi...
29 - 两数相除 - python + Java
给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商。整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345) = 8...
819 - 最常见的单词 - python + Java
给定一个段落 (paragraph) 和一个禁用单词列表 (banned)。返回出现次数最多,同时不在禁用列表中的单词。题目保证至少有一个词不在禁用列表中,而且答案唯一。禁用列表中的单词用小写字母表示,不含标点符号。段落中的单词不区分大小写。答案都是小写字母。paragraph ...
680 - 验证回文字符串 Ⅱ - python + Java
给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。解释: 你可以删除c字符。注意:字符串只包含从 a-z 的小写字母。字符串的最大长度是50000。题目要求当字符串不是回文字符串时,如果可以删除一个字符能否有成立的情况。if (s.equals("") || s...
1046 - 最后一块石头的重量 - python + Java
有一堆石头,每块石头的重量都是正整数。每一回合,从中选出两块 最重的 石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。如果 x == y,那么两块石头都会被完全粉碎;如果 x != y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为...
238 - 除自身以外数组的乘积 - python + Java
给你一个长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。提示:题目数据保证数组之中任意元素的全部前缀元素和后缀(甚至是整个数组)的乘积都在 32 位整数范围内。...
下一页