[Lintcode 3sum]三数之和(python,二分)

题目链接:http://www.lintcode.com/zh-cn/problem/3sum/?rand=true#

用这个OJ练练python…这个题意和解法就不多说了,O(n^2lgn)就行了,关键是!!python的语法…

要想给tuple排序,如果直接sort的话会自动转成list,这个时候要再转回来。

复制代码
 1 class Solution:
 2     """
 3     @param numbersbers : Give an array numbersbers of n integer
 4     @return : Find all unique triplets in the array which gives the sum of zero.
 5     """
 6     def Solution(self):
 7         pass
 8     def threeSum(self, numbers):
 9         # write your code here
10         numbers.sort()
11         ret = []
12         n = len(numbers)
13         for i in range(0, n):
14             for j in range(i+1, n):
15                 d = -(numbers[j] + numbers[i])
16                 l = 0
17                 r = n - 1
18                 p = -1
19                 while l <= r:
20                     m = (l + r) >> 1
21                     if numbers[m] == d:
22                         p = m
23                         break
24                     elif numbers[m] > d:
25                         r = m - 1
26                     elif numbers[m] < d:
27                         l = m + 1
28                 if p != -1 and p != i and p != j:
29                     ret.append((numbers[i], numbers[j], numbers[p]))
30         nn = len(ret)
31         for i in range(0, nn):
32             ret[i] = list(ret[i])
33             ret[i].sort()
34             ret[i] = tuple(ret[i])
35         ret = list(set(ret))
36         return ret
复制代码

 

posted @   Kirai  阅读(889)  评论(0编辑  收藏  举报
编辑推荐:
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
阅读排行:
· [翻译] 为什么 Tracebit 用 C# 开发
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· DeepSeek崛起:程序员“饭碗”被抢,还是职业进化新起点?
· 2分钟学会 DeepSeek API,竟然比官方更好用!
· .NET 使用 DeepSeek R1 开发智能 AI 客户端
点击右上角即可分享
微信分享提示