zoukankan      html  css  js  c++  java
  • 两数之和 II

    很久没有刷leetcode,习惯不能丢。

    打算继续保持,从海外转到“力扣”,继续完成。

    一、题目描述

    二、解答

      根据题意,有序数组,并且都是有解的。

      如果单纯一个一个比对,也能找到想要的结果,只不过算法复杂度最高。

      先确定左值,现在的题目就变成在有序数组中寻找一个数了;

        常规有 二分查找,哈希;二分查找适合有序的数组,哈希适合无序,需要先建立哈希表。

        本题适合二分查找

      代码:

      

     1 class Solution:
     2     def twoSum(self, numbers, target):
     3         for i in range(int(len(numbers)/2)):
     4             find = self.binarySearch(numbers, i+1, len(numbers)-1, target-numbers[i])
     5             if find > 0:
     6                 return [i+1, find+1]
     7 
     8     def binarySearch(self, numbers, startIndex, endIndex, target):
     9         if (target < numbers[startIndex]) or (target > numbers[endIndex]) or (startIndex > endIndex):           
    10            return -1
    11         mid = int((startIndex + endIndex) / 2)
    12         if numbers[mid] > target:
    13             return self.binarySearch(numbers, startIndex, mid-1, target)
    14         elif numbers[mid] < target:
    15             return self.binarySearch(numbers, mid+1, endIndex, target)
    16         return mid
    17 
    18 
    19 if __name__ == "__main__":
    20     s = Solution()
    21     print(s.twoSum([2, 7, 11, 15], 9))
  • 相关阅读:
    javascript 高级程序设计 二
    javascript 高级程序设计 一
    js 立即执行函数
    thinkphp验证器
    thinkphp5 行为(钩子)扩展
    thinkphp5控制器
    修改tp5的默认配置文件的位置
    thinkphp5 model 模型与Db
    API接口设计,rest,soap
    tp5的路由
  • 原文地址:https://www.cnblogs.com/doudouyoutang/p/10862608.html
Copyright © 2011-2022 走看看