zoukankan      html  css  js  c++  java
  • 二分查找

     

    题目描述:
    请实现有重复数字的升序数组的二分查找
    给定一个 元素有序的(升序)整型数组 nums 和一个目标值 target  ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1
     
    输入 [1,2,4,4,5] or [1,1,1,1,1]
    输出 2 or 0
     
    import java.util.*;
    
    
    public class Solution {
        /**
         * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
         *
         * 如果目标值存在返回下标,否则返回 -1
         * @param nums int整型一维数组 
         * @param target int整型 
         * @return int整型
         */
        public int search (int[] nums, int target) {
            if(nums==null || nums.length==0){
                return -1;
            } 
            int low = 0;
            int high = nums.length -1;
            int mid;
            while (low < high ){
                mid = (low + high) /2;
                if (nums[mid] == target){
                    high = mid;
                }
                else if (nums[mid] > target){
                    high = mid -1;
                }else{
                    low = mid + 1;
                }
            }
            return nums[low] == target?low:-1;
        }
        
    }
  • 相关阅读:
    Linux的命令2
    运维书
    管理MariaDB
    MariaDB基础命令
    Linux创建桥接网络
    聚合网络
    kickstart
    VLAN原理
    进程优先和ACL
    计划任务at、crontab
  • 原文地址:https://www.cnblogs.com/jieran/p/14511834.html
Copyright © 2011-2022 走看看