- 博客(31)
- 收藏
- 关注
原创 51. N 皇后 hard
Leetcode笔记目录51. N 皇后 hardLeetcode笔记目录一、题目描述二、解题过程1.思想2.代码三、总结一、题目描述n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击,即任何两个皇后都不能处于同一条横行、纵行或斜线上。给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。示例1:输入: 4输出: [[".Q…",
2020-11-29 15:59:07 127
原创 79. 单词搜索 Medium
Leetcode笔记目录79. 单词搜索 MediumLeetcode笔记目录一、题目描述二、解题过程1.思想2.代码三、总结一、题目描述给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例1:输入: board =[[‘A’,‘B’,‘C’,‘E’],[‘S’,‘F’,‘C’,‘S’],[‘A’,‘D’,‘E’,‘E’]]给定
2020-11-29 12:12:44 170
原创 77. 组合 Medium
Leetcode笔记目录77. 组合 MediumLeetcode笔记目录一、题目描述二、解题过程1.思想2.代码三、总结一、题目描述给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。示例1:输入: n = 4, k = 2输出: [[2,4],[3,4],[2,3],[1,2],[1,3],[1,4],]二、解题过程1.思想回溯法的经典题目,与Leetcode46十分相似,不同点在于:增加了k的限制;输入的仅仅是一个int,Leetco
2020-11-29 10:27:54 162
原创 417. 太平洋大西洋水流问题 Medium
Leetcode笔记目录417. 太平洋大西洋水流问题 MediumLeetcode笔记目录一、题目描述二、解题过程1.思想2.代码三、总结一、题目描述给定一个 m x n 的非负整数矩阵来表示一片大陆上各个单元格的高度。“太平洋”处于大陆的左边界和上边界,而“大西洋”处于大陆的右边界和下边界。规定水流只能按照上、下、左、右四个方向流动,且只能从高到低或者在同等高度上流动。请找出那些水流既可以流动到“太平洋”,又能流动到“大西洋”的陆地单元的坐标。二、解题过程1.思想思想比较难想到,如
2020-11-17 20:29:26 198
原创 547. 朋友圈 Medium
Leetcode笔记目录547. 朋友圈 MediumLeetcode笔记目录一、题目描述二、解题过程1.思想2.代码三、总结一、题目描述班上有 N 名学生。其中有些人是朋友,有些则不是。他们的友谊具有是传递性。如果已知 A 是 B 的朋友,B 是 C 的朋友,那么我们可以认为 A 也是 C 的朋友。所谓的朋友圈,是指所有朋友的集合。给定一个 N * N 的矩阵 M,表示班级中学生之间的朋友关系。如果M[i][j] = 1,表示已知第 i 个和 j 个学生互为朋友关系,否则为不知道。你必须输出所
2020-11-16 12:39:53 91
原创 695. 岛屿的最大面积 Medium
Leetcode笔记目录695. 岛屿的最大面积 MediumLeetcode笔记目录一、题目描述二、解题过程1.思想2.代码三、总结一、题目描述给定一个包含了一些 0 和 1 的非空二维数组 grid 。一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在水平或者竖直方向上相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为 0 。)示例1:输入:[[0,0,1,0,0,0
2020-11-14 17:40:23 201
原创 75. 颜色分类 Medium
Leetcode笔记目录75. 颜色分类 MediumLeetcode笔记目录一、题目描述二、解题过程1.思想2.代码三、总结一、题目描述给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。示例1:输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2]二、解题过程1.思想可以使用题目给出的方法,先扫描一遍数组统计频率然后重写
2020-11-08 10:22:58 270
原创 451. 根据字符出现频率排序 Medium
Leetcode笔记目录451. 根据字符出现频率排序 MediumLeetcode笔记目录一、题目描述二、解题过程1.思想2.代码三、总结一、题目描述给定一个字符串,请将字符串里的字符(区分大小写)按照出现的频率降序排列。示例1:输入: “tree”输出: “eert”解释:'e’出现两次,'r’和’t’都只出现一次。因此’e’必须出现在’r’和’t’之前。此外,"eetr"也是一个有效的答案。示例2:输入: “cccaaa”输出: “cccaaa”解释: 'c’和’a’都
2020-11-08 00:15:18 171
原创 347. 前 K 个高频元素 Medium
Leetcode笔记目录347. 前 K 个高频元素 MediumLeetcode笔记目录一、题目描述二、解题过程1.思想2.代码三、总结一、题目描述给定一个非空的整数数组,返回其中出现频率前 k 高的元素。示例1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例2:输入: nums = [1], k = 1输出: [1]二、解题过程1.思想典型的TOPK问题,只要将频率hash,就变成Leetcode215,难点在于如何处理hash的
2020-11-07 22:56:42 76
原创 215. 数组中的第K个最大元素 Medium
Leetcode笔记目录215. 数组中的第K个最大元素 MediumLeetcode笔记目录一、题目描述二、解题过程1.思想2.代码三、总结一、题目描述在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4二、解题过程1.思想TOPK问题,有很多种解法,如
2020-11-07 20:39:34 121
原创 4. 寻找两个正序数组的中位数 hard
Leetcode笔记目录4. 寻找两个正序数组的中位数 hardLeetcode笔记目录一、题目描述二、解题过程1.思想2.代码三、总结hard)一、题目描述给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的中位数。进阶:你能设计一个时间复杂度为 O(log (m+n)) 的算法解决此问题吗?示例1:输入: nums1 = [1,3], nums2 = [2]输出: 2.00000解释: 合并数组 = [1,2,3] ,中
2020-11-04 09:45:07 150
原创 540. 有序数组中的单一元素 Medium
Leetcode笔记目录135. 分发糖果 hardLeetcode笔记目录一、题目描述二、解题过程1.思想2.代码三、总结一、题目描述给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是 O(log n) 级别。如果数组中不存在目标值,返回 [-1, -1]。示例1:输入: nums = [5,7,7,8,8,10], target = 8输出: [3,4]示例2:输入: nums = [5,
2020-10-31 23:26:48 132
原创 154. 寻找旋转排序数组中的最小值 II hard
Leetcode笔记目录154. 寻找旋转排序数组中的最小值 II hardLeetcode笔记目录一、题目描述二、解题过程1.思想2.代码三、总结一、题目描述假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。请找出其中最小的元素。注意数组中可能存在重复的元素,且数组不一定进行了旋转。示例1:输入: [1,3,5]输出: 1示例2:输入: [2,2,2,0,1]输出: 0二
2020-10-31 22:01:05 107
原创 81. 搜索旋转排序数组 II Medium
Leetcode笔记目录81. 搜索旋转排序数组 II MediumLeetcode笔记目录一、题目描述二、解题过程1.思想2.代码三、总结一、题目描述假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,0,1,2,2,5,6] 可能变为 [2,5,6,0,0,1,2] )。编写一个函数来判断给定的目标值是否存在于数组中。若存在返回 true,否则返回 false。本题数组可以包含重复值。示例1:输入: nums = [2,5,6,0,0,1,2], target
2020-10-31 18:32:45 122
原创 33. 搜索旋转排序数组 Medium
Leetcode笔记目录33. 搜索旋转排序数组 MediumLeetcode笔记目录一、题目描述二、解题过程1.思想2.代码三、总结一、题目描述给你一个升序排列的整数数组 nums ,和一个整数 target 。假设按照升序排序的数组在预先未知的某个点上进行了旋转。(例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。请你在数组中搜索 target ,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。示例1:输入: nums = [4,5
2020-10-31 18:03:00 84
原创 34. 在排序数组中查找元素的第一个和最后一个位置 Medium
Leetcode笔记目录69. x 的平方根 EasyLeetcode笔记目录一、题目描述二、解题过程1.思想2.代码三、总结一、题目描述实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例1:输入: 4输出: 2示例2:输入: 8输出: 2解释: 8 的平方根是 2.82842…, 由于返回类型是整数,小数部分将被舍去。二、解题过程1.思想典型的二分查找算法,由于二
2020-10-28 09:52:15 118
原创 142. 环形链表 II Medium
Leetcode笔记目录142. 环形链表 II MediumLeetcode笔记目录一、题目描述二、解题过程1.思想2.代码三、总结一、题目描述给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。说明:不允许修改给定的链表。示例1:输入: head =
2020-10-25 21:52:12 71
原创 167. 两数之和 II - 输入有序数组 Easy
Leetcode笔记目录167. 两数之和 II - 输入有序数组 EasyLeetcode笔记目录一、题目描述二、解题过程1.思想2.代码三、总结一、题目描述给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。说明:返回的下标值(index1 和 index2)不是从零开始的。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例1:输入:
2020-10-25 20:32:22 130
原创 340.至多包含 K 个不同字符的最长子串 hard
Leetcode笔记目录340.至多包含 K 个不同字符的最长子串 hardLeetcode笔记目录一、题目描述二、解题过程1.思想三、总结一、题目描述参考别的大佬的题解.二、解题过程1.思想双指针的滑动窗口,其过程为右端点移动得到一个满足条件区间,然后左端点移动得到第一个不满足条件区间,然后右端点再移动,这样循环直到遍历一遍。三、总结与76. 最小覆盖子串一样的解题思路,但要注意细节比如判断条件加不加等号,距离计算是否加1。...
2020-10-24 19:39:17 378
原创 76. 最小覆盖子串 hard
Leetcode笔记目录76. 最小覆盖子串 hardLeetcode笔记目录一、题目描述二、解题过程1.思想2.代码三、总结一、题目描述给你一个字符串 S、一个字符串 T 。请你设计一种算法,可以在 O(n) 的时间复杂度内,从字符串 S 里面找出:包含 T 所有字符的最小子串.示例1:输入: S = “ADOBECODEBANC”, T = “ABC”输出: “BANC”二、解题过程1.思想双指针的滑动窗口问题,其过程为右端点移动得到一个满足条件区间,然后左端点移动得到第一个不
2020-10-24 18:05:13 150
原创 524. 通过删除字母匹配到字典里最长单词 Medium
Leetcode笔记目录135. 分发糖果 hardLeetcode笔记目录一、题目描述二、解题过程1.思想2.代码三、总结一、题目描述给定一个字符串和一个字符串字典,找到字典里面最长的字符串,该字符串可以通过删除给定字符串的某些字符来得到。如果答案不止一个,返回长度最长且字典顺序最小的字符串。如果答案不存在,则返回空字符串。示例1:输入: s = “abpcplea”, d = [“ale”,“apple”,“monkey”,“plea”]输出: “apple”示例2:输入: s
2020-10-23 15:18:29 123
原创 680. 验证回文字符串 Ⅱ Easy
Leetcode笔记目录680. 验证回文字符串 Ⅱ EasyLeetcode笔记目录一、题目描述二、解题过程1.思想2.代码三、总结一、题目描述给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。示例1:输入: “aba”输出: True示例2:输入: “abca”输出: True解释: 你可以删除c字符。二、解题过程1.思想双指针的变形题,但不是一直循环到i与j相遇,而是符合条件后直接进行处理。2.代码bool issym(string s,i
2020-10-23 10:56:11 106
原创 633. 平方数之和 Easy
Leetcode笔记目录633. 平方数之和 EasyLeetcode笔记目录一、题目描述二、解题过程1.思想2.代码三、总结一、题目描述给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c。示例1:输入: c = 5输出: true解释: 1 * 1 + 2 * 2 = 5。示例2:输入: c = 3输出: false提示: 0 <= c <= 2^31-1二、解题过程1.思想双指针的变形题目,注意i指针和j指针是可
2020-10-22 22:53:30 93
原创 88. 合并两个有序数组 Easy
Leetcode笔记目录88. 合并两个有序数组 EasyLeetcode笔记目录一、题目描述二、解题过程1.思想2.代码三、总结一、题目描述给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2
2020-10-21 09:18:01 92
原创 665. 非递减数列 Easy
Leetcode笔记目录665. 非递减数列 EasyLeetcode笔记目录一、题目描述二、解题过程1.思想2.代码三、总结一、题目描述给你一个长度为 n 的整数数组,请你判断在 最多改变1个元素的情况下,该数组能否变成一个非递减数列。我们是这样定义一个非递减数列的: 对于数组中所有的 i (0 <= i <= n-2),总满足 nums[i] <= nums[i + 1]。示例1:输入: nums = [4,2,3]输出: true解释: 你可以通过把第一个4变成
2020-10-17 16:06:06 80
原创 406. 根据身高重建队列 Medium
Leetcode笔记目录406. 根据身高重建队列 MediumLeetcode笔记目录一、题目描述二、解题过程1.思想2.代码三、总结一、题目描述假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。注意:总人数少于1100人。示例1:输入: [[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]]输出: [[5,0], [7,0], [5,2
2020-10-17 10:14:50 90
原创 763. 划分字母区间 Medium
Leetcode笔记目录763. 划分字母区间 MediumLeetcode笔记目录一、题目描述二、解题过程1.思想2.代码三、总结一、题目描述字符串 S 由小写字母组成,长度在[1, 500]之间。我们要把这个字符串划分为尽可能多的片段,同一个字母只会出现在其中的一个片段。返回一个表示每个字符串片段的长度的列表。示例1:输入: [1,0,2]输出: 5解释: 你可以分别给这三个孩子分发 2、1、2 颗糖果。示例2:输入: S = “ababcbacadefegdehijhkli
2020-10-16 22:25:14 114
原创 452. 用最少数量的箭引爆气球 Medium
Leetcode笔记目录452. 用最少数量的箭引爆气球 MediumLeetcode笔记目录一、题目描述二、解题过程1.思想2.代码三、总结一、题目描述在二维空间中有许多球形的气球。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。由于它是水平的,所以y坐标并不重要,因此只要知道开始和结束的x坐标就足够了。开始坐标总是小于结束坐标。平面内最多存在104个气球。一支弓箭可以沿着x轴从不同点完全垂直地射出。在坐标x处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xe
2020-10-15 22:58:18 192
原创 605. 种花问题 Easy
Leetcode笔记目录605. 种花问题 EasyLeetcode笔记目录一、题目描述二、解题过程1.思想2.代码三、总结一、题目描述假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去。给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表示种植了花),和一个数 n 。能否在不打破种植规则的情况下种入 n 朵花?能则返回True,不能则返回False。每个孩子至少分配到 1 个糖果。相邻的孩子中,评分高的孩
2020-10-15 22:16:26 90
原创 435. 无重叠区间 Medium
Leetcode笔记目录435. 无重叠区间 MediumLeetcode笔记目录一、题目描述二、解题过程1.思想2.代码三、总结一、题目描述给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。注意:可以认为区间的终点总是大于它的起点。区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。示例1:输入: [ [1,2], [2,3], [3,4], [1,3] ]输出: 1解释: 移除 [1,3] 后,剩下的区间没有重叠。示例2:输入:
2020-10-15 09:58:31 93
原创 135. 分发糖果 hard
Leetcode笔记目录135. 分发糖果 hardLeetcode笔记目录一、题目描述二、解题过程1.思想2.代码总结一、题目描述老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。你需要按照以下要求,帮助老师给这些孩子分发糖果:每个孩子至少分配到 1 个糖果。相邻的孩子中,评分高的孩子必须获得更多的糖果。那么这样下来,老师至少需要准备多少颗糖果呢?示例1:输入: [1,0,2]输出: 5解释: 你可以分别给这三个孩子分发 2、1、
2020-10-14 10:46:10 123
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人