鱼C论坛

 找回密码
 立即注册
查看: 1679|回复: 11

[已解决]课后作业求助

[复制链接]
发表于 2021-10-27 09:28:06 | 显示全部楼层 |阅读模式

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

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

x
0. 给定一个整数列表 nums 和一个目标值 target,请在该数组中找出和为目标值的两个元素,并将它们的数组下标值打印出来。
比如给定的列表 nums = [2, 7, 11, 15],目标值 target = 9,那么由于 nums[0] + nums[1] = 2 + 7 = 9,所以打印结果是:[0, 1]

这是我写的 不能运行,求助。
nums = [2,7,11,15]
target = 9
for n in rang(0,3):
    for m in rang(1,3):
        if nums[n] + nums[m] == target:
            print("[",n,",",m,"]")
最佳答案
2021-10-27 14:36:59
for n in range(0,3):
    for m in range(1,3)

少了个 e 啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-10-27 09:47:11 | 显示全部楼层
本帖最后由 傻眼貓咪 于 2021-10-27 09:56 编辑

复杂版本:
  1. nums = [2, 7, 11, 15]
  2. target = 9

  3. def solution(nums: list, target: int) -> list:
  4.     if not (target%2):
  5.         if nums.count(int(target/2)) > 1:
  6.             return [nums.index(int(target/2)), nums[nums.index(int(target/2))+1:].index(int(target/2))+nums.index(int(target/2))+1]
  7.     return [[nums.index(i), nums.index(j)] for i in nums for j in nums if (i != j) and (i+j == target)][0]

  8. print(solution(nums, target))
复制代码
简单版本:
  1. nums = [2, 7, 11, 15]
  2. target = 9

  3. def solution(nums: list, target: int) -> list:
  4.     for n, i in enumerate(nums):
  5.         for m, j in enumerate(nums[n+1:], start = n+1):
  6.             if i+j == target:
  7.                 return [n, m]

  8. print(solution(nums, target))
复制代码
输出:
  1. [0, 1]
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-27 09:57:57 | 显示全部楼层
傻眼貓咪 发表于 2021-10-27 09:47
复杂版本:简单版本:输出:

看不懂。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-27 10:02:15 | 显示全部楼层
本帖最后由 fish_nian 于 2021-10-27 10:10 编辑

  1. def twoSum(nums, target):
  2.     count = dict()
  3.     for a, b in enumerate(nums):
  4.         if target - b not in count:
  5.             count[b] = a
  6.         else:
  7.             print([count[target - b], a])
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-27 10:05:06 | 显示全部楼层
这个代码的思路就是通过目标数值9减去遍历列表中的每个数值,9-2 = 7,只要找到7就输出到字典中
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-27 10:07:07 | 显示全部楼层
其实也可以直接使用暴力法破解,for循环第一个数值,然后继续for循环剩下的数值,知道找出满足条件的,另外可以节省时间把大于目标数的数值排除,例如11 > 9
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-27 10:10:41 | 显示全部楼层

这题是力扣第一题,温馨建议:先不要做力扣,因为你的基础还不稳。

从你的代码:print("[",n,",",m,"]")  #这里就已经是错误了,你必须了解数据类型:字符串、整数、浮点数、布林值,你输出的是字符串,不是变量
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-27 10:12:21 | 显示全部楼层
温馨建议:从基础学起,小甲鱼的课外习题做一遍,你慢慢可以掌握基础的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-27 10:54:37 | 显示全部楼层
傻眼貓咪 发表于 2021-10-27 10:12
温馨建议:从基础学起,小甲鱼的课外习题做一遍,你慢慢可以掌握基础的

大神你好可以加个联系方式吗。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-27 11:40:10 | 显示全部楼层
山西李逵 发表于 2021-10-27 10:54
大神你好可以加个联系方式吗。

抱歉
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-27 14:36:59 | 显示全部楼层    本楼为最佳答案   
for n in range(0,3):
    for m in range(1,3)

少了个 e 啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-27 14:59:19 | 显示全部楼层
你的代码错了  是range  不是rang。
  1. nums = [2,7,11,15]
  2. target = 9
  3. for n in range(0,3):
  4.     for m in range(1,3):
  5.         if nums[n] + nums[m] == target:
  6.             print("[",n,",",m,"]")
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-7 03:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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