日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Nc105-二分查找-II

發(fā)布時(shí)間:2024/9/21 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。