两数之和 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))
复制代码

 

posted @   兜兜有糖的博客  阅读(401)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示