LeetCode-二分查找
leetcode中二分查找相关的算法题
我是一名程序媛
这个作者很懒,什么都没留下…
展开
-
LeetCode 4 寻找两个正序数组的中位数
题目描述给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的中位数。进阶:你能设计一个时间复杂度为 O(log (m+n)) 的算法解决此问题吗?题解注意要判断总长度是奇数还是偶数代码class Solution {public: double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) .原创 2021-01-06 16:30:55 · 99 阅读 · 0 评论 -
LeetCode 540 有序数组中的单一元素
题目描述给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这个数。题解二分查找代码class Solution {public: int singleNonDuplicate(vector<int>& nums) { int n=nums.size(); int l=0,h=n-1; while (l<h){ int m=l+((h-l)>.原创 2021-01-06 16:07:15 · 204 阅读 · 0 评论 -
LeetCode 154 寻找旋转排序数组中的最小值 II
题目描述假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。请找出其中最小的元素。注意数组中可能存在重复的元素。题解二分查找代码class Solution {public: int findMin(vector<int>& nums) { int n=nums.size(); int l=0,h=n-1; .原创 2021-01-06 11:43:15 · 157 阅读 · 0 评论 -
LeetCode 153 寻找旋转排序数组中的最小值
题目描述假设按照升序排序的数组在预先未知的某个点上进行了旋转。例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] 。题解二分查找代码class Solution {public: int findMin(vector<int>& nums) { int n=nums.size(); int l=0,h=n-1; while (l<h){ i.原创 2021-01-06 11:36:22 · 71 阅读 · 0 评论 -
LeetCode 81 搜索旋转排序数组 II
题目描述假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,0,1,2,2,5,6] 可能变为 [2,5,6,0,0,1,2] )。编写一个函数来判断给定的目标值是否存在于数组中。若存在返回 true,否则返回 false。题解二分查找代码class Solution {public: bool search(vector<int>& nums, int target) { int n=nums.size.原创 2021-01-05 11:29:36 · 123 阅读 · 0 评论 -
LeetCode 33 搜索旋转排序数组
题目描述升序排列的整数数组 nums 在预先未知的某个点上进行了旋转(例如, [0,1,2,4,5,6,7] 经旋转后可能变为 [4,5,6,7,0,1,2] )。请你在数组中搜索 target ,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。题解二分搜索代码class Solution {public: int search(vector<int>& nums, int target) { int n=nums.si.原创 2021-01-04 16:09:56 · 92 阅读 · 0 评论 -
LeetCode 34 在排序数组中查找元素的第一个和最后一个位置
题目描述给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。题解二分查找代码class Solution {public: int find(vector<int>& nums, int target,int n){ int l=0,h=n; while (l<h){ .原创 2021-01-04 14:37:44 · 110 阅读 · 0 评论 -
LeetCode 69 x 的平方根
题目描述实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。题解使用二分查找。代码class Solution {public: int mySqrt(int x) { if (x<=1) return x; long l=1,h=x; while (l<h){ long m=(l+h+.原创 2021-01-04 11:39:38 · 105 阅读 · 0 评论