鱼C论坛

 找回密码
 立即注册
查看: 4474|回复: 6

[已解决]求大神帮忙看看,怎么做这题

[复制链接]
发表于 2017-11-22 15:47:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目:
已有一个没有重复的整数列表,如 [2, 10, -3, 9, 4, 3, 5, 7 ,12],有一个整数目标值,如9
这个目标值可能可以由列表中两个数字相加得到,如 2 + 7,-3 + 12, 4 +5
建立一个函数
def fun(mylist, target):
    return 列表
要求返回的列表为如下形式:
[[2, 7], [-3, 12], [4, 5]]
如果仅有一个返回
[2, 7]
如果没有返回
[]
注:不要有重复的,如[2, 7]和[7, 2]
最佳答案
2017-11-22 16:30:19
天天上头条 发表于 2017-11-22 16:07
怎么解呢,用了两个for循环,还是不行
  1. def fun(mylist, target):
  2.     mylist = sorted(mylist)
  3.     result = []
  4.     for i in range(0, len(mylist)):
  5.         if mylist[i] > target / 2:
  6.             break
  7.         for j in range(i + 1, len(mylist)):
  8.             if mylist[i] + mylist[j] > target:
  9.                 break
  10.             if mylist[i] + mylist[j] == target:
  11.                 result.append([mylist[i], mylist[j]])
  12.     return result[0] if len(result) == 1 else result
复制代码

可以参考一下
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-11-22 16:06:32 | 显示全部楼层
好眼熟,126题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-22 16:07:28 | 显示全部楼层

怎么解呢,用了两个for循环,还是不行
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-22 16:30:19 | 显示全部楼层    本楼为最佳答案   
天天上头条 发表于 2017-11-22 16:07
怎么解呢,用了两个for循环,还是不行
  1. def fun(mylist, target):
  2.     mylist = sorted(mylist)
  3.     result = []
  4.     for i in range(0, len(mylist)):
  5.         if mylist[i] > target / 2:
  6.             break
  7.         for j in range(i + 1, len(mylist)):
  8.             if mylist[i] + mylist[j] > target:
  9.                 break
  10.             if mylist[i] + mylist[j] == target:
  11.                 result.append([mylist[i], mylist[j]])
  12.     return result[0] if len(result) == 1 else result
复制代码

可以参考一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-22 17:35:05 From FishC Mobile | 显示全部楼层
你可以等到答案揭晓
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-22 17:56:32 | 显示全部楼层
这是我写的~互勉
  1. L = [2, 10, -3, 9, 4, 3, 5, 7 ,12]
  2. def fun(mylist, target):
  3.     newlist = mylist[:]
  4.     rs = []
  5.     for i in mylist:
  6.         for j in newlist:
  7.             if i + j == target:
  8.                 rs.append([i,j])
  9.         newlist.remove(i)
  10.     if len(rs) == 1:
  11.         return rs[0]
  12.     else:
  13.         return rs

  14. #测试代码
  15. for x in range(10):
  16.     r = fun(L,x)
  17.     print(r)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-22 20:27:55 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-19 07:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表