二分
anieoo
这个作者很懒,什么都没留下…
展开
-
162. 寻找峰值
原题链接:162. 寻找峰值 solution:二分查找:考虑情况若nums[mid] > nums[mid + 1],则0 ~ mid 一定存在一个峰值,因为如果是nums[0] > nums[1] > nums[2] > ....nums[mid - 1] > nums[mid]的情况,题目已经给出nums[-1] = -无穷,因此nums[0]是本情况的峰值。因此可以划分二分条件。...原创 2022-06-20 16:00:01 · 68 阅读 · 0 评论 -
532. 数组中的 k-diff 数对
原题链接:532. 数组中的 k-diff 数对 solution: 暴力法,时间复杂度O(n^2),也可以过二分查找: ① 先将数组元素进行排序 ② 排完序后,遍历数组元素nums[i],对每一个nums[i]进行二分查找nums[i] + k的数,...原创 2022-06-16 09:43:44 · 61 阅读 · 0 评论 -
719. 找出第 K 小的数对距离
原题链接:719. 找出第 K 小的数对距离 Solution:二分+排序+双指针① 数对距离一定在数组元素的最大值max - 最小值min中② 将数组nums进行排序,计算出二分的区间l = 0,r = nums.back() - nums[0];② 编写函数计算出数组中数对距离小于等于k的个数(双指针),利用此函数进行二分...原创 2022-06-15 10:36:00 · 207 阅读 · 0 评论 -
81. 搜索旋转排序数组 II
原题链接:81. 搜索旋转排序数组 II solution:二分① 首先找到不满足非降序的下标② 确定二分的区间③ 实现二分查找原创 2022-06-13 19:04:10 · 59 阅读 · 0 评论 -
875. 爱吃香蕉的珂珂
原题链接:875. 爱吃香蕉的珂珂 solution: 对结果采用二分,找到满足条件的左端点。原创 2022-06-07 09:21:55 · 84 阅读 · 0 评论 -
668. 乘法表中第k小的数
原题链接:668. 乘法表中第k小的数solution: 找到一个题解:力扣class Solution {public: int count(int m,int n,int mid) { int i = m,j = 1; int cnt = 0; while(i >= 1 && j <= n) { if(i * j <= mid) { ...原创 2022-05-18 10:19:05 · 78 阅读 · 0 评论 -
378. 有序矩阵中第 K 小的元素
原题链接:378. 有序矩阵中第 K 小的元素solution: 二分查找,从矩阵做下角元素开始查找,统计每次比mid小的个数。如果小于k则l = mid + 1,如果大于等于k,则r = mid;class Solution {public: vector<vector<int>> ma; int count(int m,int n,int mid) { int i = m - 1,j = 0; ...原创 2022-05-18 10:41:26 · 128 阅读 · 0 评论 -
153. 寻找旋转排序数组中的最小值
原题链接:153. 寻找旋转排序数组中的最小值solution:class Solution {public: int findMin(vector<int>& nums) { int l = 0,r = nums.size() - 1; while(l < r){ int mid = l + r + 1>> 1; if(nums[mid] &g...原创 2022-04-08 15:21:05 · 105 阅读 · 0 评论 -
33. 搜索旋转排序数组
原题链接:33. 搜索旋转排序数组solution: 二分class Solution {public: int search(vector<int>& nums, int target) { if(!nums.size()) return -1; int l = 0,r = nums.size() - 1; while(l < r){ int mid = l + r + 1>.原创 2022-04-07 14:58:19 · 258 阅读 · 0 评论 -
1855. 下标对中的最大距离
原题链接:1855. 下标对中的最大距离solution: 二分class Solution {public: int binarySearch(vector<int> &nums2, int target) //返回num2数组小于等于target的第一个值的下标,如果有相同值则返回最大的 { int l = 0,r = nums2.size() - 1; while(l < r){ ...原创 2022-04-07 14:34:36 · 264 阅读 · 0 评论 -
1337. 矩阵中战斗力最弱的 K 行
原题链接:1337. 矩阵中战斗力最弱的 K 行solution: 暴力class Solution {public: typedef pair<int,int> PII; int calculate(vector<int>& line) //统计军人个数 { int cnt = 0; for(int i = 0;i < line.size();i++){ ...原创 2022-04-05 10:14:40 · 329 阅读 · 0 评论 -
74. 搜索二维矩阵
原题链接:74. 搜索二维矩阵solution: 暴力class Solution {public: bool searchMatrix(vector<vector<int>>& matrix, int target) { int m = matrix.size(); int n = matrix[0].size(); for(int i = 0;i < m;i++) ...原创 2022-04-04 09:33:22 · 135 阅读 · 0 评论 -
1351. 统计有序矩阵中的负数
原题链接:1351. 统计有序矩阵中的负数solution: 暴力class Solution {public: int countNegatives(vector<vector<int>>& grid) { int count = 0; for(int i = 0;i < grid.size();i++) for(int j = 0;j < grid[0].si...原创 2022-04-04 09:04:22 · 155 阅读 · 0 评论 -
1608. 特殊数组的特征值
原题链接:1608. 特殊数组的特征值solution: 排序+二分查找+暴力class Solution {public: //求出大于等于target的个数 int summary(vector<int>& nums, int target) { int l = 0,r = nums.size()-1; while(l < r){ int mid = l + r >...原创 2022-04-03 21:21:35 · 365 阅读 · 0 评论 -
1539. 第 k 个缺失的正整数
原题链接:1539. 第 k 个缺失的正整数solution:暴力做法://统计比数组元素小的个数,满足条件则返回,加一个特判缺失的数大于数组最大值class Solution {public: int findKthPositive(vector<int>& arr, int k) { int n = arr.size(); int cnt = 0; for(int i = 0, j = 1;i < n.原创 2022-04-02 11:22:08 · 384 阅读 · 0 评论 -
441. 排列硬币
原题链接:441. 排列硬币solution:暴力做法:class Solution {public: int arrangeCoins(int n) { int i; for(i = 1;i <= n; i++){ n-=i; } return i-1; }};二分:注意计算n个台阶硬币总和公式为等差数列求和(首项+末项)*项数/2class Solution {.原创 2022-04-02 10:02:14 · 291 阅读 · 0 评论 -
744. 寻找比目标字母大的最小字母
原题链接:744. 寻找比目标字母大的最小字母solution:class Solution {public: char nextGreatestLetter(vector<char>& letters, char target) { int l=0,r=letters.size()-1; while(l<r){ int mid=l+r>>1; if(letter..原创 2022-03-31 10:38:33 · 60 阅读 · 0 评论 -
1385. 两个数组间的距离值
原题链接:1385. 两个数组间的距离值solution: 暴力法class Solution {public: int findTheDistanceValue(vector<int>& arr1, vector<int>& arr2, int d) { int n = arr1.size(), m = arr2.size(); int res = 0; for(int i=0;i<n;.原创 2022-03-30 16:44:23 · 184 阅读 · 0 评论 -
367. 有效的完全平方数
原题链接:367. 有效的完全平方数solution:class Solution {public: bool isPerfectSquare(int num) { int l=0,r=num; while(l<r){ int mid = l + (r - l)/2; if((long long)mid * mid >= num) r = mid; else l..原创 2022-03-30 15:39:11 · 77 阅读 · 0 评论 -
852. 山脉数组的峰顶索引
原题链接:852. 山脉数组的峰顶索引solution: 二分查找class Solution {public: int peakIndexInMountainArray(vector<int>& arr) { int n = arr.size(); int l=0,r=n-1; while(l<r){ int mid=l+r>>1; ...原创 2022-03-29 16:46:20 · 125 阅读 · 0 评论 -
374. 猜数字大小
原题链接:374. 猜数字大小solution:class Solution {public: int guessNumber(int n) { int l=1,r=n; while(l<r){ int mid=(long long)l+r>>1; if(guess(mid)==-1) r=mid-1; else if(guess(mid)==1) l=mid+.原创 2022-03-28 19:13:51 · 88 阅读 · 0 评论 -
34. 在排序数组中查找元素的第一个和最后一个位置
原题链接:力扣solution:class Solution {public: vector<int> searchRange(vector<int>& nums, int target) { if (nums.empty()) return {-1, -1}; int l=0,r=nums.size()-1; while(l<r){ int mid = l + ..原创 2022-03-14 23:45:03 · 157 阅读 · 0 评论 -
69.x的平方根
原题链接:力扣solution: class Solution {public: int mySqrt(int x) { if(x <= 1) return x; //特判 int l = 0, r = x; while(l < r) { int mid = l + r + 0ll >> 1 ; if(mid > x / mid) .原创 2022-03-14 23:22:38 · 174 阅读 · 0 评论 -
35.搜索插入位置
对于i2c通信,在以前学习stm32单片机的已经有所接触。由于stm32的硬件i2c存在一定的缺陷,所以当时学习使用的是通过gpio模拟i2c通讯。由于太久没复习i2c通讯,今天通过Nxp的I.MX6ULL重新系统的学习一下硬件i2c控制器。一、i2c控制器介绍 首先打开芯片的技术手册可以看到这么一段话:I2C is a two-wire, bidirectional serial bus that provides a simple, efficie...原创 2022-03-14 19:43:26 · 154 阅读 · 0 评论 -
704.二分查找
原题链接:力扣Solution:class Solution {public: int search(vector<int>& nums, int target) { int l=0,r=nums.size()-1; while(l<r){ int mid=l+r>>1; if(nums[mid]>=target) r=mid; else原创 2022-03-14 19:06:22 · 320 阅读 · 0 评论 -
278.第一个错误的版本
原题链接:力扣solution:// The API isBadVersion is defined for you.// bool isBadVersion(int version);class Solution {public: int firstBadVersion(int n) { int l=0,r=n; while(l<r){ int mid=(long long)l+r>>..原创 2022-03-14 19:22:36 · 109 阅读 · 0 评论