赞
踩
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
第一种解法普通遍历效率最低
- class Solution {
- public int search(int[] nums, int target) {
- Boolean flag=false;
- int count=-1;
- if(nums.length == 0){
- count= -1;
- }
- for(int i=0;i<=nums.length-1;i++){
- if(nums[i] == target){
- flag=true;
- count= i;
- }
- }
- if(flag == false){
- count= -1;
- }
-
- return count;
- }
- }
第二种二分查找法
- class Solution {
- public int search(int[] nums, int target) {
- int left = 0;
- int right = nums.length - 1; // 注意
-
- while(left <= right) {
- int mid = (right + left) / 2;
- if(nums[mid] == target)
- return mid;
- else if (nums[mid] < target)
- left = mid + 1; // 注意
- else if (nums[mid] > target)
- right = mid - 1; // 注意
- }
- return -1;
-
- }
- }
效率差别多少呢
[-1,0,3,5,9,12] 9 答案是4
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。