zoukankan      html  css  js  c++  java
  • [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
  • 相关阅读:
    Chunky Monkey(算法)
    Confirm the Ending(算法)
    Return Largest Numbers in Arrays(算法)
    防止SQL注入总结
    mybatis中的#和$的区别 以及 防止sql注入
    拆分字符串为树形结构
    虚拟机类加载机制
    linux加载字体
    项目上线暴露出的问题
    浅析正则表达式-应用篇
  • 原文地址:https://www.cnblogs.com/kirai/p/5558967.html
Copyright © 2011-2022 走看看