two_sum问题

def two_sum(li, target):
    for i in range(len(li)):
        for j in range(i+1, len(li)):
            if li[i] + li[j] == target:
                return i, j


def bin_search(li, val, low, high):
    while low <= high:  # 候选区有值
        mid = (low + high) // 2
        if li[mid] == val:
            return mid
        elif li[mid] > val:
            high = mid - 1
        else:   # li[mid] < val
            low = mid + 1
    return -1

def two_sum_2(li, target):
    for i in range(len(li)):
        a = li[i]
        b = target - a
        j = bin_search(li, b, i+1, len(li)-1)
        if j > 0:
            return i, j


def two_sum_4(li, target):
    d = {}
    for i, num in enumerate(li):
        a = li[i]
        b = target - a
        if b in d:
            return d[b], i
        else:
            d[a] = i





# [1,2,3,4]

 

转载于:https://www.cnblogs.com/xiao-xue-di/p/10170941.html

这个错误信息表明在执行 Python 文件时遇到了 `NameError` 异常,提示名称 `two_sum_brute_force` 未定义。 具体解释如下: - **Traceback**:表示程序出错并回溯到发生错误的位置。这里的路径 `"G:\新建文件夹\1.py"` 和行号 `line 30` 显示了代码中出现问题的具体位置。 - **NameError**: 这是一个常见的Python异常类型,当尝试访问一个不存在或尚未声明的变量、函数等标识符时会抛出此异常。 根据错误描述,在第30行调用了名为 `two_sum_brute_force()` 函数,但在此之前并没有找到该函数的定义或者导入语句。可能的原因包括但不限于以下几点: ### 可能原因及解决方法 #### 1. 函数名拼写错误 确保你在其他地方正确地定义了 `two_sum_brute_force` 函数,并且其名字与调用处完全一致(区分大小写)。 ```python def two_sum_brute_force(nums, target): # ... function logic ... ``` #### 2. 定义位置不当 确认 `two_sum_brute_force` 函数是在被调用之前已经正确定义好了。如果将函数放在主逻辑之后,则会导致找不到函数的问题。 #### 3. 忘记从模块引入 如果你打算使用来自外部库或其他自定义脚本中的 `two_sum_brute_force` 方法,请检查是否缺少相应的 `import` 或者是从另一个包/模块里加载它的步骤。 例如: ```python from some_module import two_sum_brute_force # or simply define it before using if within the same script. ``` #### 4. 缩进问题 有时候缩进不规范也会导致类似的问题,特别是当你把局部作用域内的东西误认为全局可用的时候。 --- ### 示例修正后的完整代码片段 假设你想实现暴力求解两数之和算法 (`Two Sum`) ,你可以按照如下方式编写完整的代码结构: ```python def two_sum_brute_force(nums, target): for i in range(len(nums)): for j in range(i + 1, len(nums)): if nums[i] + nums[j] == target: return [i, j] return [] if __name__ == "__main__": nums = [...] # list of numbers here target = ... # set your target value try: result_brute_force = two_sum_brute_force(nums, target) print("Result:", result_brute_force) except Exception as e: print(f"An error occurred: {e}") ``` 这样就可以避免出现上述提到的名字空间相关的错误了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值