题解 | #两数之和#

两数之和

http://www.nowcoder.com/practice/20ef0972485e41019e39543e8e895b7f

python 暴力法:

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

python 预先准备好map,由于数字可能重复出现所以map是{6:[1,4], 7:[2]}的形式,数组内表示数字出现的次数

        map = {}
        for i, n in enumerate(numbers):
            if map.get(n):
                map[n].append(i+1)
            else:
                map[n] = [i+1]

        for n in numbers:
            if target - n in map:
                if map[n][0] != map[target-n][0]:
                    return map[n][0], map[target-n][0]
                elif len(map[target-n]) > 1:
                    return map[n][0], map[target-n][1]

python 在遍历中创建map(三个中的最优)

        map = {}
        for i, n in enumerate(numbers):
            if map.get(target - n) is not None:
                return map[target-n]+1 , i+1
            else:
                map[n] = i
全部评论
这个没写input(),功能上能实现吗?
点赞 回复 分享
发布于 2022-09-09 15:02 陕西

相关推荐

刷牛客的我很豁达:你是不是对算法有什么误解,你没手握两篇顶刊顶会,还想搞算法岗,有顶刊顶会在算法岗算才入门
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务