二分
BananaScript
上至前后端人工智能,下至嵌入式树莓派,无所不能的IT全栈
展开
-
【leetcode/二分】找出第k小的对距离(预处理+夹逼二分)
问题描述:给定一个整数数组,返回所有数对之间的第 k 个最小距离。一对 (A, B) 的距离被定义为 A 和 B 之间的绝对差值。示例 1:输入:nums = [1,3,1]k = 1输出:0 解释:所有数对如下:(1,3) -> 2(1,1) -> 0(3,1) -> 2因此第 1 个最小距离的数对是 (1,1),它们之间的距离为 0。提示...原创 2019-10-30 18:53:27 · 331 阅读 · 0 评论 -
【leetcode/二分】分割数组的最大值(二分+贪心)
问题描述:给定一个非负整数数组和一个整数m,你需要将这个数组分成m个非空的连续子数组。设计一个算法使得这m个子数组各自和的最大值最小。注意:数组长度n满足以下条件:1 ≤ n ≤ 1000 1 ≤ m ≤ min(50, n)示例: 输入:nums = [7,2,5,10,8]m = 2输出:18解释:一共有四种方法将nums分割为2个子数组。...原创 2019-10-30 12:08:05 · 406 阅读 · 0 评论 -
【leetcode/二分】有序矩阵的第k小元素(虚拟数组+夹逼二分)
问题描述:给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩阵中第k小的元素。请注意,它是排序后的第k小元素,而不是第k个元素。示例:matrix = [ [ 1, 5, 9], [10, 11, 13], [12, 13, 15]],k = 8,返回 13。说明:你可以假设 k 的值永远是有效的, 1 ≤ k ≤ n2 。基本...原创 2019-10-29 23:05:36 · 211 阅读 · 0 评论 -
【leetcode/二分】有效的完全平方数(夹逼二分)
问题描述:给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False。说明:不要使用任何内置的库函数,如 sqrt。示例 1:输入:16输出:True示例 2:输入:14输出:False基本思路:使用夹逼二分的思路。AC代码:class Solution {public: bool i...原创 2019-10-29 17:16:20 · 169 阅读 · 0 评论 -
【leetcode/二分】找到k个最接近的元素(滑动窗口+二分)
问题描述:给定一个排序好的数组,两个整数 k 和 x,从数组中找到最靠近 x(两数之差最小)的 k 个数。返回的结果必须要是按升序排好的。如果有两个数与 x 的差值一样,优先选择数值较小的那个数。示例1:输入: [1,2,3,4,5], k=4, x=3输出: [1,2,3,4]示例 2:输入: [1,2,3,4,5], k=4, x=-1输出: [1,2,3...原创 2019-10-28 09:45:27 · 179 阅读 · 0 评论 -
【leetcode/二分】在排序数组中查找元素的第一个和最后一个位置(二分模板3)
问题描述:给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是O(log n) 级别。如果数组中不存在目标值,返回[-1, -1]。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: [3,4]示例2:输入: nums = [5,7,...原创 2019-10-28 08:41:05 · 112 阅读 · 0 评论 -
【leetcode/二分】寻找旋转排序数组中的最小值(二分模板2应用)
问题描述:假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组[0,1,2,4,5,6,7] 可能变为[4,5,6,7,0,1,2])。请找出其中最小的元素。你可以假设数组中不存在重复元素。示例 1:输入: [3,4,5,1,2]输出: 1示例 2:输入: [4,5,6,7,0,1,2]输出: 0法一:如下所示,编写较为复杂。...原创 2019-10-27 21:09:43 · 191 阅读 · 0 评论 -
【leetcode/二分】寻找峰值(目标位置和周围元素相关的二分)
问题描述:峰值元素是指其值大于左右相邻值的元素。给定一个输入数组nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。你可以假设nums[-1] = nums[n] = -∞。示例 1:输入: nums = [1,2,3,1]输出: 2解释: 3 是峰值元素,你的函数应该...原创 2019-10-27 20:21:04 · 206 阅读 · 0 评论 -
【leetcode/二分】二分查找(二分查找模板题)
一. 问题描述:就是一个有序数组,给定一个数字,存在的话返回下标,不存在的话返回-1;二. 两种递归实现对比:这道题首先应该想到的就是递归实现。我这里所提到的两种递归实现其实就是把数组分段——一种是分为左闭右开的形式,另一种是两边都闭的形式。· 左闭右开int BinarySearch(vector<int> &nums, int l, int ...原创 2019-10-27 11:36:28 · 241 阅读 · 0 评论