zoukankan      html  css  js  c++  java
  • 704. 二分查找

      

    通常可以写出的二分法:mid = (start + end) / 2;

    另一种写法:mid = start + (end - start) / 2,可防止 (start + end) 溢出。

    代码一:

     1 class Solution(object):
     2     def search(self, nums, target):
     3         """
     4         :type nums: List[int]
     5         :type target: int
     6         :rtype: int
     7         """
     8         if target in nums:
     9             return nums.index(target)
    10         else:
    11             return -1

    代码二:

     1 class Solution(object):
     2     def search(self, nums, target):
     3         """
     4         :type nums: List[int]
     5         :type target: int
     6         :rtype: int
     7         """
     8         i, j = 0, len(nums)-1
     9 
    10         while i <= j:
    11             mid = int((i+j) / 2)
    12             if nums[mid] == target:
    13                 return mid
    14             elif nums[mid] < target:
    15                 i = mid+1
    16             else:
    17                 j = mid-1
    18         return -1

    代码三:

     1 class Solution(object):
     2     def search(self, nums, target):
     3         """
     4         :type nums: List[int]
     5         :type target: int
     6         :rtype: int
     7         """
     8         i, j = 0, len(nums)-1
     9         if i == j and nums[i] == target:
    10             return i
    11         while i <= j:
    12             mid = i + int((j - i) / 2)
    13             if nums[mid] == target:
    14                 return mid
    15             elif nums[mid] < target:
    16                 i = mid+1
    17             else:
    18                 j = mid-1
    19         return -1
  • 相关阅读:
    spring mvc 总结
    linux安装tomcat及优化
    mysql支持emoji表情
    面试问题
    linux安装jdk mysql
    webstorm 介绍
    spring 总结
    UML工具
    js bom dom
    awt多线程聊天
  • 原文地址:https://www.cnblogs.com/panweiwei/p/12748642.html
Copyright © 2011-2022 走看看