
LeetCode
文章平均质量分 54
qq_38781075
这个作者很懒,什么都没留下…
展开
-
LeetCode 1065 字符串的索引对(非原版,是修改版)
给出 字符串 text 和 字符串列表 words, 返回所有的索引对 [i, j] 使得在索引对范围内的子字符串 text[i]...text[j](包括 i 和 j)属于字符串列表 words,(要求words里面的单词必须连续且不重复,并且要包含words的所有单词),返回其中的一组集合即可,此外对于返回的集合顺序没有要求。原创 2023-05-28 17:17:11 · 191 阅读 · 0 评论 -
剑指 Offer 62. 圆圈中最后剩下的数字 —— 公式的由来
这道题又叫瑟夫环问题,代码非常简单,但是理解起来比较困难,这篇文章帮助你简单并深刻理解解法 (不是那个环链表解法,是那个数学解法),也防止我自己忘记我们先给出我们的前提,5个元素,每次淘汰第3个元素,如下图我们先来达成一个共识比如说我有2个元素,我每次都删第3个元素,而我的元素长度不够怎么办,那就是数完3个元素后,继续从第1个元素开始轮起,像一个环一样,上面的示例,我弄了一个斜杠 表示环,如 ㈠ 中第一个 4 ,往后走就是 0我们再来达成一个共识从上往下看,我每次都删第3个元素,而且元素的顺序长原创 2022-10-16 13:40:45 · 176 阅读 · 0 评论 -
LeetCode 151. 翻转字符串里的单词
给定一个字符串,逐个翻转字符串中的每个单词。示例 1:输入: "the sky is blue"输出: "blue is sky the"示例 2:输入: " hello world! "输出:"world! hello"解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。示例 3:输入: "a good example"输...原创 2019-12-14 20:41:45 · 167 阅读 · 0 评论 -
LeetCode 297. 二叉树的序列化与反序列化
序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。示例:你可以将以下二叉树: ...原创 2019-12-08 18:36:32 · 140 阅读 · 0 评论 -
LeetCode 912. 排序数组(快速排序递归和非递归&&堆排序)
给定一个整数数组nums,将该数组升序排列。示例 1:输入:[5,2,3,1]输出:[1,2,3,5]示例 2:输入:[5,1,1,2,0,0]输出:[0,0,1,1,2,5]提示:1 <= A.length <= 10000-50000 <= A[i] <= 50000我的思路(快速排序):这次采用固定一端的快速排序写法,固定...原创 2019-12-06 19:56:05 · 337 阅读 · 0 评论 -
LeetCode 31.下一个排列&&LeetCode 46. 全排列&&LeetCode 47. 全排列 II
下一个排列实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,1我的思路:也算是官方题解,基于下面...原创 2019-12-04 17:56:31 · 143 阅读 · 0 评论 -
LeetCode 146.LRU缓存机制
运用你所掌握的数据结构,设计和实现一个LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。写入数据 put(key, value) - 如果密钥不存在,则写入其数据值。当缓存容量达到上限时,它应该在写入新数据之前删除最近最少使用的...原创 2019-11-30 21:20:13 · 91 阅读 · 0 评论 -
LeetCode 50.Pow(x, n)
实现 pow(x, n),即计算 x 的 n 次幂函数。示例 1:输入: 2.00000, 10输出: 1024.00000示例2:输入: 2.10000, 3输出: 9.26100示例3:输入: 2.00000, -2输出: 0.25000说明:-100.0 < x < 100.0n 是 32 位有符号整数我的思路:其实这个...原创 2019-10-13 15:51:39 · 167 阅读 · 0 评论 -
LeetCode 670.最大交换
给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。示例 1 :输入: 2736输出: 7236解释: 交换数字2和数字7。示例 2 :输入: 9973输出: 9973解释: 不需要交换。注意:给定数字的范围是[0,]我的思路:首先看到这个题,第一直观感觉就是把后面稍大的元素跟前面较小的元素交换,因而达到最大交换的目的。我...原创 2019-10-13 10:27:53 · 284 阅读 · 0 评论 -
LeetCode 62.不同路径
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?说明:m和n的值均不超过 100。示例1:输入: m = 3, n = 2输出: 3解释:...原创 2019-10-12 17:23:06 · 112 阅读 · 0 评论 -
LeetCode 887.鸡蛋掉落
你将获得K个鸡蛋,并可以使用一栋从1到N共有 N层楼的建筑。每个蛋的功能都是一样的,如果一个蛋碎了,你就不能再把它掉下去。你知道存在楼层F ,满足0 <= F <= N 任何从高于 F的楼层落下的鸡蛋都会碎,从F楼层或比它低的楼层落下的鸡蛋都不会破。每次移动,你可以取一个鸡蛋(如果你有完整的鸡蛋)并把它从任一楼层X扔下(满足1 <= X...转载 2019-10-11 19:24:56 · 168 阅读 · 0 评论 -
LeetCode 3.无重复字符的最长子串 & 及其拓展--一个字符重复次数不超过k次不算重复
无重复字符的最长子串给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释:...原创 2019-10-11 16:36:07 · 272 阅读 · 0 评论 -
LeetCode 300.最长上升子序列 & LeetCode 354.俄罗斯套娃信封问题
最长上升子序列给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。你算法的时间复杂度应该为 O(n2) 。我的思路:初始化数组dp,长度跟要判断的数组长度相...原创 2019-10-10 20:34:56 · 180 阅读 · 0 评论 -
LeetCode 94.二叉树的中序遍历(迭代,C++)
给定一个二叉树,返回它的中序遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,3,2]我的思路:其实就是先往左遍历,途中把所有的左节点压栈,走到尽头比如碰到NULL,然后再往右边走一下,看看节点是否为空,如果不为空就继续往左走,重复上述过程。代码:class Solution {public: ...原创 2019-10-01 15:04:18 · 578 阅读 · 0 评论 -
LeetCode 1.两数之和
给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]巧解代码(...原创 2019-09-30 18:53:34 · 95 阅读 · 0 评论 -
LeetCode 70.爬楼梯
假设你正在爬楼梯。需要 n阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. ...原创 2019-09-30 18:58:32 · 89 阅读 · 0 评论 -
LeetCode 170.两数之和 III - 数据结构设计
设计并实现一个TwoSum 的类,使该类需要支持add和find的操作。add操作 - 对内部数据结构增加一个数。find操作 - 寻找内部数据结构中是否存在一对整数,使得两数之和与给定的数相等。示例1:add(1); add(3); add(5);find(4) -> truefind(7) -> false示例2:add(3); ad...原创 2019-10-03 09:59:27 · 289 阅读 · 0 评论 -
LeetCode 144.二叉树的前序遍历 & LeetCode 145.后续遍历(迭代)
前序遍历给定一个二叉树,返回它的前序遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3]我的思路:既然是前序遍历,那么就是根左右,我先访问当前节点的值并存入数组,然后再把右节点压栈,再把左节点压栈,这样先出栈的就是左节点,符合“根左右”。代码:class Solution {p...原创 2019-10-04 15:23:47 · 154 阅读 · 0 评论 -
LeetCode 2.两数相加
给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -...转载 2019-10-02 14:27:17 · 101 阅读 · 0 评论 -
LeetCode 102.二叉树的层次遍历(递归加迭代)
给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]我的思路:其实层序遍历用队列迭代是最好的,符合队列先进先出的理念,...原创 2019-10-04 15:35:49 · 149 阅读 · 0 评论 -
LeetCode 36.有效的数独
判断一个9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字1-9在每一行只能出现一次。 数字1-9在每一列只能出现一次。 数字1-9在每一个以粗实线分隔的3x3宫内只能出现一次。上图是一个部分填充的有效的数独。数独部分空格内已填入了数字,空白格用'.'表示。示例1:输入:[ ["5","3",".",".","...原创 2019-10-02 20:19:57 · 118 阅读 · 0 评论 -
LeetCode 249.移位字符串分组
给定一个字符串,对该字符串可以进行 “移位” 的操作,也就是将字符串中每个字母都变为其在字母表中后续的字母,比如:"abc" -> "bcd"。这样,我们可以持续进行 “移位” 操作,从而生成如下移位序列:"abc" -> "bcd" -> ... -> "xyz"给定一个包含仅小写字母字符串的列表,将该列表中所有满足“移位” 操作规律的组合进行分组并返回。...原创 2019-10-02 19:50:59 · 1197 阅读 · 0 评论 -
LeetCode 279.完全平方数
给定正整数n,找到若干个完全平方数(比如1, 4, 9, 16, ...)使得它们的和等于n。你需要让组成和的完全平方数的个数最少。示例1:输入: n = 12输出: 3 解释: 12 = 4 + 4 + 4.示例 2:输入: n = 13输出: 2解释: 13 = 4 + 9.我的思路:首先一个数,比如13,小于13的平方数有1、4、9,13的平方数必...转载 2019-10-01 09:24:10 · 105 阅读 · 0 评论 -
LeetCode运行加快代码
总的来说就是优化了IO读写次数吧。1,static bool init = [](){ ios::sync_with_stdio(false); cin.tie(nullptr); return true;}();2,#include <iostream>int main() { std::ios::sync_with_std...原创 2019-09-30 19:04:38 · 285 阅读 · 0 评论 -
LeetCode 105.从前序与中序遍历序列构造二叉树(C++版)
根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7我的思路其实就是模仿正常人分析的根据前序遍历和中序遍历还原二叉树。...原创 2019-09-30 18:39:00 · 1102 阅读 · 0 评论 -
LeetCode 430.扁平化多级双向链表
您将获得一个双向链表,除了下一个和前一个指针之外,它还有一个子指针,可能指向单独的双向链表。这些子列表可能有一个或多个自己的子项,依此类推,生成多级数据结构,如下面的示例所示。扁平化列表,使所有结点出现在单级双链表中。您将获得列表第一级的头部。示例:输入: 1---2---3---4---5---6--NULL | 7---8---9---...原创 2019-10-02 14:50:09 · 134 阅读 · 0 评论 -
LeetCode 138.复制带随机指针的链表
给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的深拷贝。示例:输入:{"$id":"1","next":{"$id":"2","next":null,"random":{"$ref":"2"},"val":2},"random":{"$ref":"2"},"val":1}解释:节点 1 的值是 1,它的下...原创 2019-10-02 16:15:27 · 129 阅读 · 0 评论 -
LeetCode 110.平衡二叉树
给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树[3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回true。示例 2:给定二叉树[1,2,2,3,3,null,null,...原创 2019-10-05 15:06:30 · 154 阅读 · 0 评论 -
LeetCode 652.寻找重复的子树
给定一棵二叉树,返回所有重复的子树。对于同一类的重复子树,你只需要返回其中任意一棵的根结点即可。两棵树重复是指它们具有相同的结构以及相同的结点值。示例 1: 1 / \ 2 3 / / \ 4 2 4 / 4下面是两个重复的子树: 2 / 4和...转载 2019-10-02 20:48:26 · 129 阅读 · 0 评论 -
LeetCode 51.N皇后 & LeetCode 52.N皇后II
n皇后问题研究的是如何将n个皇后放置在n×n的棋盘上,并且使皇后彼此之间不能相互攻击。上图为 8 皇后问题的一种解法。给定一个整数 n,返回所有不同的n皇后问题的解决方案。每一种解法包含一个明确的n 皇后问题的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后和空位。示例:输入: 4输出: [ [".Q..", // 解法 1 "...Q...原创 2019-10-09 19:35:47 · 447 阅读 · 0 评论