1.题目描述
704. 二分查找
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
示例 1:
| 12
 3
 
 | 输入: nums = [-1,0,3,5,9,12], target = 9输出: 4
 解释: 9 出现在 nums 中并且下标为 4
 
 | 
示例 2:
| 12
 3
 
 | 输入: nums = [-1,0,3,5,9,12], target = 2输出: -1
 解释: 2 不存在 nums 中因此返回 -1
 
 | 
提示:
你可以假设 nums 中的所有元素是不重复的。
n将在 [1, 10000]之间。
nums 的每个元素都将在 [-9999, 9999]之间。
2.代码实现
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 
 | package swu.xl.algorithm.code_03_03.experiment_4;
 public class Solution {
 
 /**
 * leetcode P704 二分查找
 * @param nums
 * @param target
 * @return
 */
 public static int search(int[] nums, int target) {
 int leftIndex = 0;
 int rightIndex = nums.length-1;
 int middle = 0;
 
 while (leftIndex != rightIndex){
 middle = (leftIndex + rightIndex) / 2;
 
 if (nums[middle] >= target){
 rightIndex = middle;
 }else {
 leftIndex = middle + 1;
 }
 }
 
 if (nums[leftIndex] == target){
 return leftIndex;
 }
 
 return -1;
 }
 
 /**
 * Test
 * @param args
 */
 public static void main(String[] args) {
 System.out.println(search(new int[]{-1,0,3,5,9,12},2));
 System.out.println(search(new int[]{-1,0,3,5,9,12},9));
 }
 }
 
 |