查看: 3024| 回复: 7
跳转到指定楼层
上一主题 下一主题
收起左侧

[Leetcode] 新手求教LeetCode为啥无法输出答案

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
我今天开始刷LeetCode,第一道题是两数之和。我在pycharm里面试了试,输出正确后粘到答题板上,但是LeetCode的输出是空,我不太明白为什么我的答案无法输出呢?

题目是这样的。

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9


我用的是遍历法。由于不能重复,所以只要匹配选定数之后的就可以了。比如,第1个数,差值在第2-4之间存在,就可以输出了。如果第1个失败,运行第2个,差值在第3-4之间存在就可以输出。
解答是这样的。
def twoSum(self,nums,target):
    count=0
    for number in nums:
        rest = target - number
        count += 1
        if rest in nums[count:]:
            print(nums.index(number),nums.index(rest))

有没有大佬能帮我这个纯新手小白看看?万分感谢

上一篇:Coursera 或 Udacity上有没有新手的C++课程
下一篇:新题40分钟无法ac,看答案还是继续debug自己的代码?
🔗
hjy 2020-7-24 06:35:08 | 只看该作者
全局:
leetcode 一般按照函数的return 结果判断而不是像别的oj一样靠print的,所以你把结果放return 那里吧
回复

使用道具 举报

🔗
 楼主| Chelsea1234 2020-7-24 07:03:01 | 只看该作者
全局:
hjy 发表于 2020-7-24 06:35
leetcode 一般按照函数的return 结果判断而不是像别的oj一样靠print的,所以你把结果放return 那里吧

我把print 改成 return 还是不行。

def twoSum(self,nums,target):
    count=0
    for number in nums:
        rest = target - number
        count += 1
        if rest in nums[count:]:
            y = (nums.index(number),nums.index(rest))
            return y
回复

使用道具 举报

🔗
hjy 2020-7-24 07:07:36 | 只看该作者
全局:
Chelsea1234 发表于 2020-7-24 07:03
我把print 改成 return 还是不行。

def twoSum(self,nums,target):

return [nums.index(number),nums.index(rest)]
回复

使用道具 举报

🔗
hjy 2020-7-24 07:10:37 | 只看该作者
全局:
Chelsea1234 发表于 2020-7-24 07:03
我把print 改成 return 还是不行。

def twoSum(self,nums,target):

而且你要记得算上target - num == num 的情况,你的num有可能被选两次
回复

使用道具 举报

🔗
 楼主| Chelsea1234 2020-7-24 07:23:19 | 只看该作者
全局:
hjy 发表于 2020-7-24 07:10
而且你要记得算上target - num == num 的情况,你的num有可能被选两次

我试了return
def twoSum(self,nums,target):
    count=0
    for number in nums:
        rest = target - number
        count += 1
        if rest in nums[count:]:
            return [nums.index(number),nums.index(rest)]

这个还是无输出。

我的num不会被选两次,for语句是按顺序遍历,count初始是0,选第一个数的时候,我是从nums[2:]里面选,不会重复选到第一个数。选第二个数的时候,rest从第三个之后匹配。

还是我没理解您的意思?

回复

使用道具 举报

🔗
 楼主| Chelsea1234 2020-7-24 07:59:03 | 只看该作者
全局:
hjy 发表于 2020-7-24 07:10
而且你要记得算上target - num == num 的情况,你的num有可能被选两次

我明白你的意思了,LeetCode只是给了一个sample,题目的意思是有可能会有[2,2,4]这种重复数的现象。我的代码就会出错
回复

使用道具 举报

全局:
试一下在最后写一个 return [-1,-1]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

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