zoukankan      html  css  js  c++  java
  • 算法-05-二分查找第一个出现的数 美团一面

    描述

    请实现有重复数字的升序数组的二分查找
    给定一个 元素有序的(升序)整型数组 nums 和一个目标值 target  ,写一个函数搜索 nums 中的第一个出现的target,如果目标值存在返回下标,否则返回 -1
     

    Java 实现

    import java.util.*;
    
    
    public class Solution {
        /**
         * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
         *
         * 如果目标值存在返回下标,否则返回 -1
         * @param nums int整型一维数组 
         * @param target int整型 
         * @return int整型
         */
        public int search (int[] nums, int target) {
            // write code here
            if (nums == null || nums.length == 0)
                return -1;
            int left = 0;
            int right = nums.length - 1;
            while (left < right) {
                int mid = left + (right - left) / 2;
                if (nums[mid] < target) {
                    left = mid + 1;
                } else {
                    right = mid;
                }
            }
            return nums[left] == target ? left : -1;    
        }
       
    }

    Python 实现

    class Solution:
        def search(self , nums , target ):
            # write code here
            if nums is None or len(nums)==0:
                return -1
            start = 0
            end = len(nums) - 1
            while(start < end):
                mid = start + (end - start) // 2
                if nums[mid] < target:
                    start = mid +1
                if nums[mid] > target:
                    end = mid
            return start if nums[start] == target else -1
    不要小瞧女程序员
  • 相关阅读:
    traceroute原理
    IP转发和子网路由
    Dijkstra算法
    String源码学习
    多线程的参数传递
    hbase参数配置优化
    hadoop 点点滴滴(一)
    Win8安装教程!笔记本用U盘安装Win8只需三步
    CentOS 6.4下编译安装MySQL 5.6.14
    Nginx配置文件说明
  • 原文地址:https://www.cnblogs.com/shix0909/p/15032905.html
Copyright © 2011-2022 走看看