python求三个数之和,python写一个函数求三个数的和

  python求三个数之和,python写一个函数求三个数的和

  本文主要介绍了三个数和的Python实现,具有很好的参考价值。希望对你有帮助。如有错误或不足之处,请不吝赐教。

  00-1010三个数之和主题描述思想Python3代码

  

目录

  给你一个包含n个整数的数组nums,判断nums中是否有A,B,C三个元素,

  做一个b c=0?请找出所有符合条件的三元组,不要重复。

  答案中不允许出现重复的三元组。

  示例:

  给定数组nums=[-1,0,1,2,-1,4],

  满足要求的三元组集合是:

  [

  [-1, 0, 1],

  [-1, -1, 2]

  ]

  

三数之和题目描述

  1.首先对数组进行排序,可以使用Python内置函数或其他定义的排序算法。

  2.应用双指针算法。用索引I固定第一个数,遍历整个数组,第一个数也是三个数中最小的数,然后在数的右边设置两个指针L和R,L=I 1,r=len(nums)-1,

  3.确定这三个索引所指向的元素以及它们与0的大小关系。

  和0,右指针向左移动一位;和0,左指针向右移动一位。

  为了避免重复的三元组,在移动左右指针时,应该跳过所有相邻的相等num[I]。

  

思路

  #导入计算时间的包,调用系统时间。

  从时间导入*

  #初始时间

  t1=时间()

  def三和(nums):

  nums.sort()

  n=len(nums)

  res=[]

  对于范围(n):内的I

  如果两个相邻数字相等,跳过并避免重复

  如果i 0和nums[i]==nums[i-1]:

  继续

  l,r=I ^ 1,n-1

  而l r:

  if nums[I]nums nums[l]nums 0:

  r -=1

  而nums[r 1]==nums[r]:

  r -=1

  elif nums[I]nums[l]nums[r]0:

  l=1

  而nums[l-1]==nums[l]:

  l=1

  else:

  res.append([nums[i],nums[l],nums[r]])

  l=1

  r -=1

  而nums[l]==nums[l - 1]: l=1

  而nums[r]==nums[r 1]: r -=1

  返回资源

  if __name__==__main__:

  nums=[-1,0,1,2,-1,-4]

  打印(三个总和(数字))

  #结束时间

  t2=时间()

  #运行时间

  运行时间=t2 - t1

  打印(运行时)

  运行结果:

  [[-1, -1, 2], [-1, 0, 1]]

  #运行时间

  0.0010113716125488281

  以上代码有一些思想错误:

  如果三个数字都大于0,将退出循环,因为没有满足条件的结果。

  没有条件每次都严格评判lr。

  修正后的代码:

  从时间导入*

  t1=时间()

  def三和(nums):

  nums.sort()

  n=len(nums)

  res=[]

  对于范围(n-2):内的I

  如果nums[i] 0:break

  如果两个相邻数字相等,跳过并避免重复

  如果i 0和nums[i]==nums[i-1]:

  继续

  l,r=I ^ 1,n-1

  而l r:

  if nums[I]nums nums[l]nums 0:

  r -=1

  而l r和nums[r-1]==nums[r]:

  r -=1

  elif nums[I]nums[l]nums[r]0:

  l=1

  而l r和nums[l]==nums[l-1]:

  l=1

  else:

  res.append([nums[i],nums[l],nums[r]])

  l=1

  r -=1

  而l r和nums[l]==nums[l - 1]: l=1

  而l r和nums[r]==nums[r 1]: r -=1

  返回资源

  if __name__==__main__:

  nums=[-2,-3,0,0,-2]

  打印(三个总和(数字))

  t2=时间()

  运行时间=t2 - t1

  打印(运行时)

  结果:

  []

  #时间

  0.0

  以上个人经验,希望给你一个参考,也希望你能支持盛行的IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: