
二分搜索
文章平均质量分 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 · 226 阅读 · 0 评论 -
元素最左出现
对于一个有序数组arr,再给定一个整数num,请在arr中找到num这个数出现的最左边的位置。 给定一个数组arr及它的大小n,同时给定num。请返回所求位置。若该元素在数组中未出现,请返回-1。 测试样例: [1,2,3,3,4],5,3 返回:2 class LeftMostAppearance { public: int findPos(vector<int>...原创 2018-08-20 09:59:09 · 163 阅读 · 0 评论 -
循环有序数组最小值
对于一个有序循环数组arr,返回arr中的最小值。有序循环数组是指,有序数组左边任意长度的部分放到右边去,右边的部分拿到左边来。比如数组[1,2,3,3,4],是有序循环数组,[4,1,2,3,3]也是。 给定数组arr及它的大小n,请返回最小值。 测试样例: [4,1,2,3,3],5 返回:1 class MinValue { public: int getMin(vec...原创 2018-08-20 09:59:16 · 377 阅读 · 0 评论 -
最左原位
有一个有序数组arr,其中不含有重复元素,请找到满足arr[i]==i条件的最左的位置。如果所有位置上的数都不满足条件,返回-1。 给定有序数组arr及它的大小n,请返回所求值。 测试样例: [-1,0,2,3],4 返回:2 class Find { public: int findPos(vector<int> arr, int n) { //...原创 2018-08-20 09:59:24 · 237 阅读 · 0 评论 -
完全二叉树计数
给定一棵完全二叉树的根节点root,返回这棵树的节点个数。如果完全二叉树的节点数为N,请实现时间复杂度低于O(N)的解法。 给定树的根结点root,请返回树的大小。 方法一:递归法 /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int ...原创 2018-08-20 09:59:32 · 419 阅读 · 0 评论 -
快速N次方
如果更快的求一个整数k的n次方。如果两个整数相乘并得到结果的时间复杂度为O(1),得到整数k的N次方的过程请实现时间复杂度为O(logN)的方法。 给定k和n,请返回k的n次方,为了防止溢出,请返回结果Mod 1000000007的值。 测试样例: 2,3 返回:8 class QuickPower { public: int getPower(int k, int N) {...原创 2018-08-20 09:59:39 · 367 阅读 · 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 · 151 阅读 · 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 · 819 阅读 · 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 · 129 阅读 · 0 评论