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
    不要小瞧女程序员
  • 相关阅读:
    实现随机颜色
    为网站实现一个验证码
    vue.js帐号,密码,邮箱和移动手机号码正则验证
    从网址中截去主机名和参数
    vue.js判断网址参数是否有效
    创建windows service
    vue.js axios call api example
    vue.js mouse over change the image
    jQuery接收url的参数
    ms sql server排序
  • 原文地址:https://www.cnblogs.com/shix0909/p/15032905.html
Copyright © 2011-2022 走看看