鱼C论坛

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

[已解决]错误代码改正后在leetcode里面还是会报错求分析原因

[复制链接]
发表于 2020-7-29 17:32:52 | 显示全部楼层 |阅读模式

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

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

x
题目的要求是:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。



示例:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

能说明一下它提示的错误是什么意思吗?应该怎么改?我写的代码也没40多行啊,他怎么提示40多行有问题?
最佳答案
2020-7-29 18:40:06
你的代码应该改为:
class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        for i in range(len(nums)):
            for j in range(len(nums)):
                if nums[i] + nums[j] == target:
                    return [i, j]
才能通过。

不要改变力扣题目的模板。
$HQ7EV{40(%~_X{F33UL23X.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-29 17:53:46 | 显示全部楼层
把你的代码发上来,帮你改改力扣答题要按照格式的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-29 18:07:58 | 显示全部楼层
1、力扣答题需要固定格式,你的格式可能有问题,不是传参的形式
2、力扣要对代码进行优化,超过一定占用内存,就会报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-29 18:34:42 From FishC Mobile | 显示全部楼层
首先,Leetcode 的模板不能删除
每个题的题解都是写在 Solution 类下的 方法 内
如果你删掉了,Leetcode 就找不到北了

如果想回复原始模板,
可以代码编辑区上面的按钮回复(注意你的代码会被覆盖)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-29 18:40:06 | 显示全部楼层    本楼为最佳答案   
你的代码应该改为:
class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        for i in range(len(nums)):
            for j in range(len(nums)):
                if nums[i] + nums[j] == target:
                    return [i, j]
才能通过。

不要改变力扣题目的模板。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-29 19:18:31 | 显示全部楼层
你两个for去暴力破题,真的好吗?
def hash(numbers, target):
    """哈希表,不多赘述"""
    dct = {}
    for idx, val in enumerate(numbers):
        if val in dct:
            return [dct[val] + 1, idx + 1]
        dct[target - val] = idx


def double_pointer(numbers, target):
    # TODO {
    #      如果numbers[left] + numbers[right] > target,由于是已经排序好的。所以 right - 1。直到指针重叠
    #        反之 numbers[left] + numbers[right] < target,  left + 1 。
    #  }
    left, right = 0, len(numbers) - 1

    while numbers[left] + numbers[right] != target:
        if numbers[left] + numbers[right] > target:
            right -= 1
        else:
            left += 1

    return [left + 1, right + 1]


def two_points(numbers, target):
    # TODO {
    #      我们需要找两个数,numbers[i] 以及在numbers[i]右侧的 target - numbers[i]
    #        我们遍历数组需要O(n),二分查找一个值需要O(log_n), 最终耗时O(nlogn)
    #  }
    length = len(numbers)
    for index, value in enumerate(numbers):
        _ = index
        while _ < length:
            mid = (_ + length) >> 1
            number = numbers[mid]

            if number > target - value:
                length = mid
            elif number < target - value:
                _ = mid + 1
            else:
                return [index + 1, mid + 1]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-7-30 00:02:02 | 显示全部楼层
Stubborn 发表于 2020-7-29 19:18
你两个for去暴力破题,真的好吗?

两个for的话暴力解题是啥意思不懂?刚接触力扣的,是该用你的方法,你的方法更好吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-19 17:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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