zoukankan      html  css  js  c++  java
  • [Lintcode two-sum]两数之和(python,双指针)

    题目链接:http://www.lintcode.com/zh-cn/problem/two-sum/

    给一个整数数组,找到两个数使得他们的和等于一个给定的数target

    备份一份,然后排序。搞两个指针分别从左从右开始扫描,每次判断这两个数相加是不是符合题意,如果小了,那就把左边的指针向右移,同理右指针。然后在备份的数组里找到位置。

     1 class Solution:
     2     """
     3     @param numbers : An array of Integer
     4     @param target : target = numbers[index1] + numbers[index2]
     5     @return : [index1 + 1, index2 + 1] (index1 < index2)
     6     """
     7     def twoSum(self, numbers, target):
     8         # write your code here
     9         tmp = []
    10         for i in numbers:
    11             tmp.append(i)
    12         numbers = sorted(numbers)
    13         a = 0
    14         b = len(numbers) - 1
    15         while True:
    16             if numbers[a] + numbers[b] == target:
    17                 break
    18             elif numbers[a] + numbers[b] < target:
    19                 a += 1
    20             elif numbers[a] + numbers[b] > target:
    21                 b -= 1
    22         reta = numbers[a]
    23         retb = numbers[b]
    24         a = -1
    25         b = -1
    26         for i in range(0, len(tmp)):
    27             if tmp[i] == reta and a == -1:
    28                 a = i
    29             elif tmp[i] == retb and b == -1:
    30                 b = i
    31         if a > b:
    32             a = a ^ b
    33             b = a ^ b
    34             a = a ^ b
    35         return [a+1, b+1]
  • 相关阅读:
    典型格雷码-数学规律
    合并两个有序数组
    从fragment跳转到Activity
    fragment如何findviewby
    布局和位置
    preferencefragment
    AndroidStudio导入support-v13
    一些属性作用
    菜单menu
    ActionBar
  • 原文地址:https://www.cnblogs.com/kirai/p/5597144.html
Copyright © 2011-2022 走看看