两数之和 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))
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架