Nc105-二分查找-II
生活随笔
收集整理的這篇文章主要介紹了
Nc105-二分查找-II
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
描述
請實(shí)現(xiàn)有重復(fù)數(shù)字的升序數(shù)組的二分查找
給定一個(gè) 元素有序的(升序)整型數(shù)組 nums 和一個(gè)目標(biāo)值 target? ,寫一個(gè)函數(shù)搜索 nums 中的第一個(gè)出現(xiàn)的target,如果目標(biāo)值存在返回下標(biāo),否則返回 -1
示例1
輸入:
[1,2,4,4,5],4返回值:
2說明:
從左到右,查找到第1個(gè)為4的,下標(biāo)為2,返回2示例2
輸入:
[1,2,4,4,5],3返回值:
-1示例3
輸入:
[1,1,1,1,1],1返回值:
0代碼:
int search(int* nums, int numsLen, int target ) {// write code hereint left=0,right=numsLen-1;while(right>=left){int mid=(left+right)/2;if(nums[mid]==target){while(nums[mid-1]==target){mid--;} return mid;}else if(nums[mid]>target){right=mid-1;}else{left=mid+1;}}return -1; }遞歸解法:
int search(int* nums, int numsLen, int target ) {return erfen(nums,0, numsLen-1,target); }int erfen(int *num,int left,int right,int target){int mid;if(right>=left){mid=(right+left)/2;if(num[mid]==target){while(num[mid-1]==target){mid--;}return mid;}else if(num[mid]>target){right=mid-1;return erfen(num,left,right,target); }else{left=mid+1;return erfen(num,left,right,target);}}return -1; }總結(jié)
以上是生活随笔為你收集整理的Nc105-二分查找-II的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NC78-反转列表
- 下一篇: 牛客网数组排序NC140