力扣算法
切韵
这个作者很懒,什么都没留下…
展开
-
力扣41 448 ’用数组设计哈希‘
448.找到所有数组中小时的数字给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字,并以数组的形式返回结果。示例 1:输入:nums = [4,3,2,7,8,2,3,1]输出:[5,6]示例 2:输入:nums = [1,1]输出:[2]提示:n == nums.length1 <= n <= 1051 <= nums[i] <= n进阶:你能在不使原创 2022-03-15 00:22:21 · 361 阅读 · 0 评论 -
力扣面试题32——二叉树层序遍历
题目从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。例如:给定二叉树: [3,9,20,null,null,15,7],3/9 20/15 7返回:[3,9,20,15,7]解题思路:题目要求的二叉树的 从上至下 打印(即按层打印),又称为二叉树的 广度优先搜索(BFS)。BFS 通常借助 队列 的先入先出特性来实现。算法流程:特例处理: 当树的根节点为空,则直接返回空列表 [] ;初始化: 打印结果列表 res = [] ,包含根节点的队列 queue原创 2022-02-11 21:04:30 · 72 阅读 · 0 评论 -
力扣622——设计循环队列
题目设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通队列里,一旦一个队列满了,我们就不能插入下一个元素,即使在队列前面仍有空间。但是使用循环队列,我们能使用这些空间去存储新的值。你的实现应该支持如下操作:MyCircularQueue(k): 构造器,设置队列长度为 k 。Front: 从队首获取元素。如果队列为空,返回 -原创 2022-02-10 20:47:46 · 136 阅读 · 0 评论 -
力扣347——前K个高频元素
桶排序原创 2022-02-09 12:22:03 · 773 阅读 · 0 评论 -
力扣215——数组中的第K个最大元素
题目描述在一个未排序的数组中,找到第 k 大的数字。输入输出样例输入一个数组和一个目标值 k,输出第 k 大的数字。题目默认一定有解。Input: [3,2,1,5,6,4] and k = 2Output: 5题解快速选择一般用于求解 k-th Element 问题,可以在 O(n) 时间复杂度,O(1) 空间复杂度完成求解工作。快速选择的实现和快速排序相似,不过只需要找到第 k 大的枢(pivot)即可,不需要对其左右再进行排序。与快速排序一样,快速选择一般需要先打乱数组,否则最坏情况下时原创 2022-02-08 15:19:12 · 234 阅读 · 0 评论 -
力扣81—— 搜索旋转排序数组 II
二分,力扣习题原创 2022-02-07 14:38:59 · 120 阅读 · 0 评论 -
力扣34——在排序数组中查找元素的第一个和最后一个位置
题目描述给定一个增序的整数数组和一个值,查找该值第一次和最后一次出现的位置。输入输出样例输入是一个数组和一个值,输出为该值第一次出现的位置和最后一次出现的位置(从 0 开始);如果不存在该值,则两个返回值都设为-1。Input: nums = [5,7,7,8,8,10], target = 8Output: [3,4]数字 8 在第 3 位第一次出现,在第 4 位最后一次出现。题解这道题可以看作是自己实现 C++ 里的 lower_bound 和 upper_bound 函数。这里我们尝试原创 2022-02-06 12:58:05 · 296 阅读 · 3 评论 -
力扣69——X的平方根
二分 c++原创 2022-02-05 13:16:26 · 352 阅读 · 0 评论 -
力扣76——最小覆盖子串
题目描述给定两个字符串 S 和 T,求 S 中包含 T 所有字符的最短连续子字符串的长度,同时要求时间复杂度不得超过 O(n)。输入输出样例输入是两个字符串 S 和 T,输出是一个 S 字符串的子串。Input: S = “ADOBECODEBANC”, T = “ABC”Output: “BANC”在这个样例中,S 中同时包含一个 A、一个 B、一个 C 的最短子字符串是“BANC”。题解本题使用滑动窗口求解,即两个指针 l 和 r 都是从最左端向最右端移动,且 l 的位置一定在r 的左边原创 2022-02-04 11:55:07 · 235 阅读 · 0 评论 -
力扣142——环形链表||
快慢指针,双指针,链表原创 2022-02-03 13:35:42 · 148 阅读 · 0 评论 -
力扣88——合并两个有序数组
双指针原创 2022-02-02 14:57:36 · 240 阅读 · 0 评论 -
力扣167——两数之和(有序数组)
双指针原创 2022-02-01 15:22:25 · 123 阅读 · 2 评论 -
力扣435——无重叠区间
题目描述给定多个区间,计算让这些区间互不重叠所需要移除区间的最少个数。起止相连不算重叠。输入输出样例输入是一个数组,数组由多个长度固定为 2 的数组组成,表示区间的开始和结尾。输出一个整数,表示需要移除的区间数量。Input: [[1,2], [2,4], [1,3]]Output: 1在这个样例中,我们可以移除区间 [1,3],使得剩余的区间 [[1,2], [2,4]] 互不重叠。题解在选择要保留区间时,区间的结尾十分重要:选择的区间结尾越小,余留给其它区间的空间就越大,就越能保留更多的原创 2022-01-31 09:55:03 · 223 阅读 · 0 评论 -
力扣135——分发糖果
题目描述一群孩子站成一排,每一个孩子有自己的评分。现在需要给这些孩子发糖果,规则是如果一个孩子的评分比自己身旁的一个孩子要高,那么这个孩子就必须得到比身旁孩子更多的果;所有孩子至少要有一个糖果。求解最少需要多少个糖果。输入输出样例输入是一个数组,表示孩子的评分。输出是最少糖果的数量。Input: [1,0,2]Output: 5在这个样例中,最少的糖果分法是 [2,1,2]。题解昨天做完了题目 455,会不会认为存在比较关系的贪心策略一定需要排序或是选择?虽然这一道题也是运用贪心策略,原创 2022-01-30 12:10:34 · 1180 阅读 · 0 评论 -
力扣455——分发饼干
题目描述有一群孩子和一堆饼干,每个孩子有一个饥饿度,每个饼干都有一个大小。每个孩子只能吃一个饼干,且只有饼干的大小不小于孩子的饥饿度时,这个孩子才能吃饱。求解最多有多少孩子可以吃饱。输入输出样例输入两个数组,分别代表孩子的饥饿度和饼干的大小。输出最多有多少孩子可以吃饱的数量。Input: [1,2], [1,2,3]Output: 2在这个样例中,我们可以给两个孩子喂 [1,2]、[1,3]、[2,3] 这三种组合的任意一种。题解因为饥饿度最小的孩子最容易吃饱,所以我们先考虑这个孩子。为了尽原创 2022-01-29 22:55:20 · 127 阅读 · 1 评论