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
    不要小瞧女程序员
  • 相关阅读:
    案例分析
    阅读任务
    准备工作
    课程总结
    十三周总结
    第十二周总结
    第十一周学习总结
    第十周学习总结
    第九周课程总结&实验报告7
    第八周课程学习总结与实验6
  • 原文地址:https://www.cnblogs.com/shix0909/p/15032905.html
Copyright © 2011-2022 走看看