zoukankan      html  css  js  c++  java
  • 0704-leetcode算法实现之二分查找-bianarySearch-python&golang实现

    给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target  ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。

    示例 1:
    输入: nums = [-1,0,3,5,9,12], target = 9
    输出: 4
    解释: 9 出现在 nums 中并且下标为 4

    示例 2:
    输入: nums = [-1,0,3,5,9,12], target = 2
    输出: -1
    解释: 2 不存在 nums 中因此返回 -1

    提示:

    你可以假设 nums 中的所有元素是不重复的。
    n 将在 [1, 10000]之间。
    nums 的每个元素都将在 [-9999, 9999]之间。

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/binary-search

    python

    class Solution:
        def bianarySearch(self, nums: [int], target: int) -> int:
            """
            二分查找,时间O(logn),空间O(1)
            :param nums: [int]
            :param target: int
            :return: int
            """
            if len(nums) == 0:
                return -1
            left = 0
            right = len(nums) - 1
            while left <= right:
                mid = int((left+right)/2)
                if nums[mid] < target:
                    left = mid + 1
                elif nums[mid] > target:
                    right = mid - 1
                else:
                    return mid
            return -1
    
    if __name__ == "__main__":
        nums1 = [1,3,5,7,8,9,13,15,16]
        nums2 = []
        target1 = 10
        target2 = 13
        test = Solution()
        print(test.bianarySearch(nums2, target1))
        print(test.bianarySearch(nums1, target1))
        print(test.bianarySearch(nums1, target2))
    

    golang

    package main
    
    import "fmt"
    
    func main() {
    	var nums = []int{1, 3, 5, 6, 7, 9, 10, 23, 25}
    	var target int = 10
    	res := bianarySearch(nums, target)
    	fmt.Println(res)
    
    }
    
    func bianarySearch(nums []int, target int) int {
    	if len(nums) == 0 {
    		return -1
    	}
    
    	var left int = 0
    	var right int = len(nums) -1
    	for left <= right {
    		mid := (left + right) / 2
    		if nums[mid] < target {
    			left = mid + 1
    		} else if nums[mid] > target {
    			right = mid - 1
    		} else {
    			return mid
    		}
    	}
    	return -1
    }
    
  • 相关阅读:
    【HackerRank】Sherlock and MiniMax
    【HackerRank】Game Of Rotation
    【HackerRank】Bus Station
    【HackerRank】 有洞的地图
    【HackerRank】Sherlock and Array
    【HackerRank】QuickSort(稳定快排,空间复杂度O(n))
    【HackerRank】 The Full Counting Sort
    51获取6050原始数据并通过匿名上位机显示波形
    51单片机之IIC通信原理及软件仿真
    寻迹小车开发日记
  • 原文地址:https://www.cnblogs.com/davis12/p/15404368.html
Copyright © 2011-2022 走看看