Coding habits
爱学习的羽
一直在学习
展开
-
省份数量、深度优先搜索、广度优先搜索、并查集解法
547. 省份数量 有n个城市,其中一些彼此相连,另一些没有相连。如果城市a与城市b直接相连,且城市b与城市c直接相连,那么城市a与城市c间接相连。 省份是一组直接或间接相连的城市,组内不含其他没有相连的城市。 给你一个n x n的矩阵isConnected,其中isConnected[i][j] = 1表示第i个城市和第j个城市直接相连,而isConnected[i][j] = 0表示二者不直接相连。 返回矩阵中省份的数量。 示例 1: ...原创 2021-03-11 19:36:05 · 211 阅读 · 0 评论 -
数组中的第K个最大元素、堆排序、快速排序、归并排序详解
215. 数组中的第K个最大元素 在未排序的数组中找到第 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 分析 先将数组从小到大排好序,你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度。尽量采用o(nlogn)复杂度的排序算法,取数组中序号为nums.size()-k的数即为第k个最原创 2021-03-08 20:49:37 · 330 阅读 · 0 评论 -
前 K 个高频元素、桶排序
347. 前 K 个高频元素 给定一个非空的整数数组,返回其中出现频率前 k 高的元素。 示例 1: 输入: nums = [1,1,1,2,2,3], k = 2 输出: [1,2] 示例 2: 输入: nums = [1], k = 1 输出: [1] 提示: 你可以假设给定的 k 总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。 你的算法的时间复杂度必须优于 O(n log n) , n 是数组的大小。 题目数据保证答案唯一,换句话说,数组中前 k 个高频元素的集合是唯一的。 你可以按任意顺原创 2021-03-05 10:12:13 · 149 阅读 · 1 评论 -
在排序数组中查找元素的第一个和最后一个位置、变形二分法
34. 在排序数组中查找元素的第一个和最后一个位置 给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target,返回[-1, -1]。 进阶: 你可以设计并实现时间复杂度为O(log n)的算法解决此问题吗? 首先处理特殊情况:列表为空或者其中只有1个元素的情况; 接着采用变形的二分法,搜索区间确定为左闭右开,查找列表中目标值出现的起始位置(或者小于目标值的数的个数); 接着修改目标值为...原创 2021-03-04 19:38:49 · 167 阅读 · 1 评论 -
贪心算法、 无重叠区间
435. 无重叠区间 https://leetcode-cn.com/problems/non-overlapping-intervals/ 给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。 注意: 可以认为区间的终点总是大于它的起点。 区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。 示例 1: 输入: [ [1,2], [2,3], [3,4], [1,3] ] 输出: 1 解释: 移除 [1,3] 后,剩下的区间没有重叠。 示例 2:原创 2021-01-28 14:38:41 · 249 阅读 · 0 评论 -
贪心策略、分发糖果
135. 分发糖果 https://leetcode-cn.com/problems/candy/ 老师想给孩子们分发糖果,有N个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。 你需要按照以下要求,帮助老师给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果。 评分更高的孩子必须比他两侧的邻位孩子获得更多的糖果。 那么这样下来,老师至少需要准备多少颗糖果呢? 示例1: 输入:[1,0,2] 输出:5 解释:你可以分别给这三个孩子分发 2、1、2 颗糖果。 示例...原创 2021-01-28 12:17:09 · 139 阅读 · 0 评论