![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
二分搜索
文章平均质量分 67
张荣华_csdn
这个作者很懒,什么都没留下…
展开
-
局部最小值位置
定义局部最小的概念。arr长度为1时,arr[0]是局部最小。arr的长度为N(N>1)时,如果arr[0]<arr[1],那么arr[0]是局部最小;如果arr[N-1]<arr[N-2],那么arr[N-1]是局部最小;如果0<i<N-1,既有arr[i]<arr[i-1]又有arr[i]<arr[i+1],那么arr[i]是局部最小。 给定无序数组a...原创 2018-08-20 09:59:02 · 193 阅读 · 0 评论 -
元素最左出现
对于一个有序数组arr,再给定一个整数num,请在arr中找到num这个数出现的最左边的位置。给定一个数组arr及它的大小n,同时给定num。请返回所求位置。若该元素在数组中未出现,请返回-1。测试样例:[1,2,3,3,4],5,3返回:2class LeftMostAppearance {public: int findPos(vector<int>...原创 2018-08-20 09:59:09 · 141 阅读 · 0 评论 -
循环有序数组最小值
对于一个有序循环数组arr,返回arr中的最小值。有序循环数组是指,有序数组左边任意长度的部分放到右边去,右边的部分拿到左边来。比如数组[1,2,3,3,4],是有序循环数组,[4,1,2,3,3]也是。给定数组arr及它的大小n,请返回最小值。测试样例:[4,1,2,3,3],5返回:1class MinValue {public: int getMin(vec...原创 2018-08-20 09:59:16 · 306 阅读 · 0 评论 -
最左原位
有一个有序数组arr,其中不含有重复元素,请找到满足arr[i]==i条件的最左的位置。如果所有位置上的数都不满足条件,返回-1。给定有序数组arr及它的大小n,请返回所求值。测试样例:[-1,0,2,3],4返回:2class Find {public: int findPos(vector<int> arr, int n) { //...原创 2018-08-20 09:59:24 · 211 阅读 · 0 评论 -
完全二叉树计数
给定一棵完全二叉树的根节点root,返回这棵树的节点个数。如果完全二叉树的节点数为N,请实现时间复杂度低于O(N)的解法。给定树的根结点root,请返回树的大小。方法一:递归法/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int ...原创 2018-08-20 09:59:32 · 378 阅读 · 0 评论 -
快速N次方
如果更快的求一个整数k的n次方。如果两个整数相乘并得到结果的时间复杂度为O(1),得到整数k的N次方的过程请实现时间复杂度为O(logN)的方法。给定k和n,请返回k的n次方,为了防止溢出,请返回结果Mod 1000000007的值。测试样例:2,3返回:8class QuickPower {public: int getPower(int k, int N) {...原创 2018-08-20 09:59:39 · 328 阅读 · 0 评论 -
33. 搜索旋转排序数组
假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。示例 1:输入: nums = [4,5,6,7,0,1,2...原创 2018-08-22 15:07:26 · 127 阅读 · 0 评论 -
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...原创 2018-08-22 15:11:39 · 782 阅读 · 0 评论 -
35. 搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 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], ...原创 2018-08-22 15:18:06 · 106 阅读 · 0 评论