给定按升序排序的整数数组,找到给定目标值的起始和终止位置。 您的算法的运行时复杂度必须是O(log n)的顺序。
来源:互联网 发布:凯立德端口波特率检测 编辑:程序博客网 时间:2024/05/17 08:23
/** * Return an array of size *returnSize. * Note: The returned array must be malloced, assume caller calls free(). */int* searchRange(int* nums, int numsSize, int target, int* returnSize) { int low_i,low_j,high_i,high_j; int low_middle,high_middle; low_i = 0; low_j = numsSize-1; *returnSize=2; int *res = (int*)calloc(2, sizeof(int)); res[0] = -1; res[1] = -1; while(low_i<=low_j) { low_middle = (low_i+low_j)/2; if(nums[low_middle]==target) { if(low_middle==0) break; else { if(nums[low_middle-1]target) break; else high_i = high_middle+1; } } else high_j = high_middle-1; } res[0] = low_middle; res[1] = high_middle; return res; }
/** * Return an array of size *returnSize. * Note: The returned array must be malloced, assume caller calls free(). */int* searchRange(int* nums, int numsSize, int target, int* returnSize) { int low_i,low_j,high_i,high_j; int low_middle,high_middle; low_i = 0; low_j = numsSize-1; *returnSize=2; int *res = (int*)calloc(2, sizeof(int)); res[0] = -1; res[1] = -1; while(low_i<=low_j) { low_middle = (low_i+low_j)/2; if(nums[low_middle]==target) { if(low_middle==0) break; else { if(nums[low_middle-1]<target) break; else low_j = low_middle; } } else if(nums[low_middle]<target) low_i = low_middle+1; else low_j = low_middle-1; } if(nums[low_middle]!=target) return res; high_i = low_middle; high_j = numsSize-1; while(high_i<=high_j) { high_middle = (high_i+high_j)/2; if(nums[high_middle]==target) { if(high_middle==numsSize-1) break; else { if(nums[high_middle+1]>target) break; else high_i = high_middle+1; } } else high_j = high_middle-1; } res[0] = low_middle; res[1] = high_middle; return res; }
1 0
- 给定按升序排序的整数数组,找到给定目标值的起始和终止位置。 您的算法的运行时复杂度必须是O(log n)的顺序。
- 给定按升序排序的整数数组,找到给定目标值的开始和结束位置。 如果在数组中找不到目标,则返回[-1,-1]。
- 给定一个未排序的整数数组,找到第一个缺失的正整数 您的算法应在O(n)时间运行,并使用恒定空间。
- 求解一个数组里等于给定整数和的两个数的O(n)时间复杂度算法
- 求解一个数组里等于给定整数和的两个数的O(n)时间复杂度算法
- 在已排序的数组中寻找和是给定值的两项,要求时间复杂度为O(n)
- 给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。 要求:空间复杂度O(1),时间复杂度为O(n)。
- 给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。要求:空间复杂度O(1),时间复杂度为O(n)
- 每天一道LeetCode-----找到给定数组的连续子数组,使这个子数组的和最大,要求复杂度为O(n)
- 排序数组中查找和为给定值的两个数O(n)
- 346/5000 给定一个n个整数的数组S,在S中找到三个整数,使得总和最接近给定数量的目标。 返回三个整数的和。
- 给定一个未排序的整数数组,找到其中位数。 中位数是排序后数组的中间值,
- 输入一个安升序排列的数组和一个数,在数组中找两个数,使它们的和正好是给定的那个数。o(n)
- 中位数 21% 通过 给定一个未排序的整数数组,找到其中位数。 中位数是排序后数组的中间值,如果数组的个数是偶数个,则返回排序后数组的第N/2个数
- 给定一个整数数组,返回两个数字的索引,使它们相加得到一个特定目标值
- 百度笔试:给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。 要求:空间复杂度O(1),时间复杂度为O(n)
- 4.给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。 要求:空间复杂度O(1),时间复杂度为O(n)
- leetcode-java.T016_threeSumClosest---给定包含n个整数数组S,找到S中的三个整数,从而使之和最接近给定的数,返回三个整数的总和.
- nginx源码分析--数组
- linux 环境搭建solr5.5.4搜索服务
- Nicescroll滚动条插件的用法
- 多线程的应用场景
- Java文件流
- 给定按升序排序的整数数组,找到给定目标值的起始和终止位置。 您的算法的运行时复杂度必须是O(log n)的顺序。
- Unicode
- Android自定义动画酷炫的提交按钮
- Oracle 临时表空间管理
- mybatis+mysql带模糊查询的分页代码
- 基于 react-native+redux 开发的高仿 V2EX 客户端
- 欢迎使用CSDN-markdown编辑器
- springmvc+mybatis+mysl+log4j+jxls实现sql完整输出和excel导出
- 进程间通信——共享内存