• 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
    }
    
  • 相关阅读:
    对 Service中sqlsession对象的优化
    mybatis 接口绑定 和 动态SQL
    添加指定的日志信息
    数据库优化
    MyBatis 实现新增
    MyBatis中log4j 和 参数 和 分页和别名 功能
    OpenGL_混合
    android应用开发揭秘第13章01示例,移动图像,opengl绘制星星问题解决!
    《关于个人承接项目的注意事项》读后感
    Android OpenGL ES教程 第二部分 构建多边形
  • 原文地址:https://www.cnblogs.com/davis12/p/15404368.html
Copyright © 2020-2023  润新知