当前位置: 首页> 财经> 股票 > 维护网站一年多少钱_公司活动策划方案怎么做_百度搜索关键词_宁波网络推广

维护网站一年多少钱_公司活动策划方案怎么做_百度搜索关键词_宁波网络推广

时间:2025/8/27 17:32:12来源:https://blog.csdn.net/m0_56332819/article/details/143253760 浏览次数:0次
维护网站一年多少钱_公司活动策划方案怎么做_百度搜索关键词_宁波网络推广

整数数组 nums 按升序排列,数组中的值 互不相同 。

在传递给函数之前,nums 在预先未知的某个下标 k0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,6,7,0,1,2] 。

给你 旋转后 的数组 nums 和一个整数 target ,如果 nums 中存在这个目标值 target ,则返回它的下标,否则返回 -1 。

你必须设计一个时间复杂度为 O(log n) 的算法解决此问题。

示例 1:

输入:nums = [4,5,6,7,0,1,2], target = 0
输出:4

示例 2:

输入:nums = [4,5,6,7,0,1,2], target = 3
输出:-1

示例 3:

输入:nums = [1], target = 0
输出:-1

暴力解法:

int search(int* nums, int numsSize, int target) {for(int i=0;i<numsSize;i++){if(nums[i]==target){return i;}}return -1;
}

时间复杂度O(n);空间复杂度O(1)

二分查找解法:

int search(int nums[],int n,int target){//处理特殊情况if(n==0) return -1;if(n==1) return (nums[0]==target)?0:-1;int left=0,righ=n-1;while(left<=righ){int mid=(left+righ)/2;if(nums[mid]==target){return mid;//找到了 }//判断左表有序还是右表有序,将之间子看着是右表的第一个结点便一目了然if(nums[left]<=nums[mid]){//左表有序 if(nums[left]<=target&&target<nums[mid]){//target在左表中 righ=mid-1; }else{left=mid+1;//target在右表中 }}else{//右表有序 if(nums[mid]<target&&target<=nums[righ]){//target在右表中 left=mid+1;}else{//target在左表中 righ=mid-1;}} } return -1;//没有这个元素 
} 

时间复杂度O(logn);空间复杂度O(1)

关键字:维护网站一年多少钱_公司活动策划方案怎么做_百度搜索关键词_宁波网络推广

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: