二分法
文章平均质量分 63
二分法
Sophia_fez
干啥啥不行,可爱第一名.jpg
展开
-
leetcode **878. 第 N 个神奇数字(2022.11.22)
给定三个整数 n , a , b ,返回第 n 个神奇的数字。因为答案可能很大,所以返回答案 对 109 + 7 取模 后的值。max之前的神奇数字的个数 = a的倍数的数量 + b的倍数的数量 - a和b的公倍数的数量。一开始以为和丑数差不多,后来发现这不是只有a和b两个因数= =直接暴力吧,超时,没想到直接从Min(a, b)到Min(a。一个正整数如果能被 a 或 b 整除,那么它是神奇的。而M之前,x的倍数的数量=m除以x并向下取整。原创 2022-11-22 00:36:09 · 158 阅读 · 0 评论 -
leetcode *792. 匹配子序列的单词数(2022.11.17)(可以再记一下)
字符串的 子序列 是从原始字符串中生成的新字符串,可以从中删去一些字符(可以是none),而不改变其余字符的相对顺序。给定字符串 s 和字符串数组 words, 返回 words[i] 中是s的子序列的单词个数。大概看明白了,但字节写不出来哇,只会最简单的遍历啊,会超时啊= =例如, “ace” 是 “abcde” 的子序列。大概思路似乎看懂了,代码没完全看明白 = =原创 2022-11-17 00:37:10 · 153 阅读 · 0 评论 -
leetcode **805. 数组的均值分割(2022.11.14)
我们要将 nums 数组中的每个元素移动到 A 数组 或者 B 数组中,使得 A 数组和 B 数组不为空,并且 average(A) == average(B)。注意:对于数组 arr , average(arr) 是 arr 的所有元素的和除以 arr 长度。这题还要考虑怎么优化不超时,还不光是思路对了就能做出来= =如果可以完成则返回true , 否则返回 false。题解看到一半没看懂,放弃了= =给定你一个整数数组 nums。原创 2022-11-14 22:15:36 · 173 阅读 · 0 评论 -
leetcode *528. 按权重随机选择(2021.8.30)
【题目】*528. 按权重随机选择给定一个正整数数组 w ,其中 w[i] 代表下标 i 的权重(下标从 0 开始),请写一个函数 pickIndex ,它可以随机地获取下标 i,选取下标 i 的概率与 w[i] 成正比。例如,对于 w = [1, 3],挑选下标 0 的概率为 1 / (1 + 3) = 0.25 (即,25%),而选取下标 1 的概率为 3 / (1 + 3) = 0.75(即,75%)。也就是说,选取下标 i 的概率为 w[i] / sum(w) 。示例 1:输入:["So原创 2021-08-30 08:44:18 · 204 阅读 · 0 评论 -
leetcode 1337. 方阵中战斗力最弱的 K 行(2021.8.1)
【题目】1337. 方阵中战斗力最弱的 K 行给你一个大小为 m * n 的方阵 mat,方阵由若干军人和平民组成,分别用 1 和 0 表示。请你返回方阵中战斗力最弱的 k 行的索引,按从最弱到最强排序。如果第 i 行的军人数量少于第 j 行,或者两行军人数量相同但 i 小于 j,那么我们认为第 i 行的战斗力比第 j 行弱。军人 总是 排在一行中的靠前位置,也就是说 1 总是出现在 0 之前。示例 1:输入:mat = [[1,1,0,0,0], [1,1,1,1,0], [1,0,0,原创 2020-05-21 17:19:00 · 268 阅读 · 0 评论 -
leetcode *1713. 得到子序列的最少操作次数(2021.7.26)
【题目】*1713. 得到子序列的最少操作次数给你一个数组 target ,包含若干 互不相同 的整数,以及另一个整数数组 arr ,arr 可能 包含重复元素。每一次操作中,你可以在 arr 的任意位置插入任一整数。比方说,如果 arr = [1,4,1,2] ,那么你可以在中间添加 3 得到 [1,4,3,1,2] 。你可以在数组最开始或最后面添加整数。请你返回 最少 操作次数,使得 target 成为 arr 的一个子序列。一个数组的 子序列 指的是删除原数组的某些元素(可能一个元素都不删除)原创 2021-07-26 17:47:20 · 204 阅读 · 0 评论 -
leetcode *300. 最长递增子序列(2020.3.14)
【题目】给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。你算法的时间复杂度应该为 O(n2) 。进阶: 你能将算法的时间复杂度降低到 O(n log n) 吗?官方题解...原创 2020-03-14 23:45:24 · 184 阅读 · 0 评论 -
leetcode *1838. 最高频元素的频数(2021.7.19)
【题目】*1838. 最高频元素的频数元素的 频数 是该元素在一个数组中出现的次数。给你一个整数数组 nums 和一个整数 k 。在一步操作中,你可以选择 nums 的一个下标,并将该下标对应元素的值增加 1 。执行最多 k 次操作后,返回数组中最高频元素的 最大可能频数 。示例 1:输入:nums = [1,2,4], k = 5输出:3解释:对第一个元素执行 3 次递增操作,对第二个元素执 2 次递增操作,此时 nums = [4,4,4] 。4 是数组中最高频元素,频数是 3 。示原创 2021-07-19 11:34:41 · 150 阅读 · 2 评论 -
leetcode *1818. 绝对差值和(2021.7.14)
【题目】*1818. 绝对差值和给你两个正整数数组 nums1 和 nums2 ,数组的长度都是 n 。数组 nums1 和 nums2 的 绝对差值和 定义为所有 |nums1[i] - nums2[i]|(0 <= i < n)的 总和(下标从 0 开始)。你可以选用 nums1 中的 任意一个 元素来替换 nums1 中的 至多 一个元素,以 最小化 绝对差值和。在替换数组 nums1 中最多一个元素 之后 ,返回最小绝对差值和。因为答案可能很大,所以需要对 109 + 7 取余原创 2021-07-14 11:47:51 · 215 阅读 · 0 评论 -
leetcode *274. H 指数(2021.7.11)&*275. H 指数 II(2021.7.12)
【题目】*274. H 指数给定一位研究者论文被引用次数的数组(被引用次数是非负整数)。编写一个方法,计算出研究者的 h 指数。h 指数的定义:h 代表“高引用次数”(high citations),一名科研人员的 h 指数是指他(她)的 (N 篇论文中)总共有 h 篇论文分别被引用了至少 h 次。且其余的 N - h 篇论文每篇被引用次数 不超过 h 次。例如:某人的 h 指数是 20,这表示他已发表的论文中,每篇被引用了至少 20 次的论文总共有 20 篇。示例:输入:citations =原创 2021-07-11 21:38:05 · 167 阅读 · 1 评论 -
leetcode *981. 基于时间的键值存储(2021.7.10)
【题目】*981. 基于时间的键值存储创建一个基于时间的键值存储类 TimeMap,它支持下面两个操作:set(string key, string value, int timestamp),存储键 key、值 value,以及给定的时间戳 timestamp。get(string key, int timestamp),返回先前调用 set(key, value, timestamp_prev) 所存储的值,其中 timestamp_prev <= timestamp。如果有多个这样的值,原创 2021-07-10 11:33:20 · 127 阅读 · 0 评论 -
leetcode *222. 完全二叉树的节点个数(待深究)(2020.11.24)
【题目】*222. 完全二叉树的节点个数给出一个完全二叉树,求出该树的节点个数。说明:完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。示例:输入: 1 / \ 2 3 / \ /4 5 6输出: 6【解题思路1】DFS或者BFS暴力都可以……class Solution { public int c原创 2020-11-24 10:56:16 · 164 阅读 · 0 评论 -
leetcode 189. 旋转数组
【题目】给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。示例 1:输入: [1,2,3,4,5,6,7] 和 k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]示例 2:输入: [-1,-100,3,9...原创 2020-03-27 18:59:07 · 114 阅读 · 0 评论 -
leetcode 剑指 Offer 53 - II. 0~n-1中缺失的数字 & 268. 缺失数字 & 面试题 17.04. 消失的数字
【题目】268. 缺失数字给定一个包含 0, 1, 2, …, n 中 n 个数的序列,找出 0 … n 中没有出现在序列中的那个数。示例 1:输入: [3,0,1]输出: 2示例 2:输入: [9,6,4,2,3,5,7,0,1]输出: 8说明:你的算法应具有线性时间复杂度。你能否仅使用额外常数空间来实现?【解题思路1】0 没有出现在数组的首位,n 没有出现在数组的末...原创 2020-04-04 16:54:13 · 244 阅读 · 0 评论 -
leetcode 面试题 08.03. 魔术索引(2020.7.31)
【题目】面试题 08.03. 魔术索引魔术索引。 在数组A[0…n-1]中,有所谓的魔术索引,满足条件A[i] = i。给定一个有序整数数组,编写一种方法找出魔术索引,若有的话,在数组A中找出一个魔术索引,如果没有,则返回-1。若有多个魔术索引,返回索引值最小的一个。示例1: 输入:nums = [0, 2, 3, 4, 5] 输出:0 说明: 0下标的元素为0示例2: 输入:nums = [1, 1, 1] 输出:1提示:nums长度在[1, 1000000]之间【解题思路1】原创 2020-06-03 14:13:46 · 246 阅读 · 0 评论 -
leetcode 35. 搜索插入位置(2020.7.17)
【题目】给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: 0...原创 2020-02-22 23:27:48 · 102 阅读 · 0 评论 -
leetcode *378. 有序矩阵中第K小的元素(2020.7.2)
【题目】*378. 有序矩阵中第K小的元素给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩阵中第 k 小的元素。请注意,它是排序后的第 k 小元素,而不是第 k 个不同的元素。示例:matrix = [ [ 1, 5, 9], [10, 11, 13], [12, 13, 15]],k = 8,返回 13。提示:你可以假设 k 的值永远是有效的,1 ≤ k ≤ n2 。【解题思路1】暴力法转化为一维数组,排序后返回下标 k-1 的元素clas原创 2020-07-02 11:21:02 · 258 阅读 · 0 评论 -
leetcode 剑指 Offer 53 - I. 在排序数组中查找数字 I(2021.7.16) & 34. 在排序数组中查找元素的第一个和最后一个位置(二分法)(2020.12.1)
【题目】34. 在排序数组中查找元素的第一个和最后一个位置给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是 O(log n) 级别。如果数组中不存在目标值,返回 [-1, -1]。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: [3,4]示例 2:输入: nums = [5,7,7,8,8,10], target = 6输出: [-1,-1]【解题思路原创 2020-06-24 17:04:29 · 218 阅读 · 0 评论 -
leetcode *33. 搜索旋转排序数组(2020.4.27)
【题目】*33. 搜索旋转排序数组LeetCode 33 题:搜索旋转排序数组LeetCode 81 题:搜索旋转排序数组-iiLeetCode 153 题:寻找旋转排序数组中的最小值LeetCode 154 题:寻找旋转排序数组中的最小值-ii先找到 「153. 寻找旋转排序数组中的最小值」的索引,由此可以将数组分为升序的两段。根据 nums[0] 与 target 的关系判断 ta...原创 2020-04-27 15:51:03 · 194 阅读 · 0 评论 -
leetcode *153. 寻找旋转排序数组中的最小值
【题目】*153. 寻找旋转排序数组中的最小值假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [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【解题思路1】二分...原创 2020-04-27 16:42:34 · 180 阅读 · 0 评论 -
leetcode 852. 山脉数组的峰顶索引
【题目】852. 山脉数组的峰顶索引我们把符合下列属性的数组 A 称作山脉:A.length >= 3存在 0 < i < A.length - 1 使得A[0] < A[1] < … A[i-1] < A[i] > A[i+1] > … > A[A.length - 1]给定一个确定为山脉的数组,返回任何满足 A[0] < A[...原创 2020-04-27 17:33:33 · 242 阅读 · 0 评论 -
leetcode **1095. 山脉数组中查找目标值(未研究)(2020.4.29)
【题目】**1095. 山脉数组中查找目标值(这是一个 交互式问题 )给你一个 山脉数组 mountainArr,请你返回能够使得 mountainArr.get(index) 等于 target 最小 的下标 index 值。如果不存在这样的下标 index,就请返回 -1。何为山脉数组?如果数组 A 是一个山脉数组的话,那它满足如下条件:首先,A.length >= 3其次,...原创 2020-04-27 17:36:17 · 380 阅读 · 0 评论 -
leetcode 剑指 Offer 11. 旋转数组的最小数字 & **154. 寻找旋转排序数组中的最小值 II(2020.7.22)
【题目】**154. 寻找旋转排序数组中的最小值 II假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [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-04-27 17:21:03 · 219 阅读 · 1 评论 -
leetcode 面试题 04.02. 最小高度树
【题目】面试题 04.02. 最小高度树给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / / -10 5 【解题思路1】二分法 + 递归取数组中间的数建立根节点root,然后以中间为分原创 2020-05-31 12:19:54 · 199 阅读 · 0 评论 -
leetcode 1385. 两个数组间的距离值
【题目】1385. 两个数组间的距离值给你两个整数数组 arr1 , arr2 和一个整数 d ,请你返回两个数组之间的 距离值 。「距离值」 定义为符合此描述的元素数目:对于元素 arr1[i] ,不存在任何元素 arr2[j] 满足 |arr1[i]-arr2[j]| <= d 。示例 1:输入:arr1 = [4,5,8], arr2 = [10,9,1,8], d = 2输出:2解释:对于 arr1[0]=4 我们有:|4-10|=6 > d=2 |4-9|=5 >原创 2020-05-22 17:15:29 · 272 阅读 · 0 评论 -
leetcode 1237. 找出给定方程的正整数解
【题目】1237. 找出给定方程的正整数解给出一个函数 f(x, y) 和一个目标结果 z,请你计算方程 f(x,y) == z 所有可能的正整数 数对 x 和 y。给定函数是严格单调的,也就是说:f(x, y) < f(x + 1, y)f(x, y) < f(x, y + 1)函数接口定义如下:interface CustomFunction {public:// Returns positive integer f(x, y) for any given positive原创 2020-05-19 14:25:30 · 303 阅读 · 0 评论 -
leetcode 744. 寻找比目标字母大的最小字母
【题目】744. 寻找比目标字母大的最小字母给你一个排序后的字符列表 letters ,列表中只包含小写英文字母。另给出一个目标字母 target,请你寻找在这一有序列表里比目标字母大的最小字母。在比较时,字母是依序循环出现的。举个例子:如果目标字母 target = ‘z’ 并且字符列表为 letters = [‘a’, ‘b’],则答案返回 ‘a’示例:输入:letters = [...原创 2020-04-29 14:48:13 · 297 阅读 · 0 评论