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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

1、leetcode704 二分查找*

發布時間:2025/3/19 编程问答 7 豆豆
生活随笔 收集整理的這篇文章主要介紹了 1、leetcode704 二分查找* 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

leetcode 704 二分查找

給定一個 n 個元素有序的(升序)整型數組 nums 和一個目標值 target ,寫一個函數搜索 nums 中的 target,如果目標值存在返回下標,否則返回 -1。

示例 1:
輸入: nums = [-1,0,3,5,9,12], target = 9
輸出: 4
解釋: 9 出現在 nums 中并且下標為 4

示例 2:
輸入: nums = [-1,0,3,5,9,12], target = 2
輸出: -1
解釋: 2 不存在 nums 中因此返回 -1

文章目錄

  • leetcode 704 二分查找
  • 二分法:方法一
  • 二分法:方法二

二分法:方法一

這道題是二分查找里面最簡單的一道題,我們可以從簡單入手,看while循環里的條件到底怎么寫,到底要不要=,以及right=mid還是right=mid-1等等。
建議方法一和方法二對照著看。

public int search(int[] nums, int target) {int left=0;int right=nums.length;//二分查找索引范圍[left,right)//這邊條件很重要,當left==right時,退出循環;為什么不寫<=?//因為上面的索引范圍是在[left,right),right是不包括的,如果<=,//那么left==right是滿足循環條件的,但是下面nums[mid]必定會數組//角標越界,所以這邊循環條件只能寫<。while(left<right){ int mid=(left+right)>>1;if(nums[mid]==target){return mid;}else if(nums[mid]>target){//因為nums[mid]>target,right=mid;有人要問right=mid-1//行不行,不可以,因為mid-1很可能就是答案,上面的索引范圍是//[left,right),right是不包括的,所以這邊只能是right=mid。//寫成right=mid-1,就相當于索引范圍是[left,right],//左右都包括了,和一開始的條件不一致。right=mid;}else{left=mid+1;}}//即left==right,退出循環;right索引是不包括的,//left==right說明沒有查找到,返回-1;return -1;}

二分法:方法二

public int search(int[] nums, int target) {int left=0;//和方法一的不同處,索引范圍是[left,right]int right=nums.length-1;//這邊退出循環的條件是left>right;通俗點講就是left==right是程序的最后一次循環。//方法一不是這樣的。方法一是當left==right就會退出循環。//為什么會這樣?是因為初始化索引范圍不同造成的。while(left<=right){int mid=(left+right)>>1;if(nums[mid]==target){return mid;}else if(nums[mid]>target){//因為nums[mid]>target,所以right=mid-1,注意這邊不是//right=mid,因為nums[mid]已經不符合條件了,為了和初始化//索引范圍一致,即[left,right],這邊需要寫成right=mid-1,//因為mid-1很可能就是答案,但是mid絕不可能是答案。right=mid-1;}else{//left和上面的right同理left=mid+1;}}//當left>right,退出循環return -1;} 與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的1、leetcode704 二分查找*的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。