美文网首页
两数之和(python,一重循环,字典)

两数之和(python,一重循环,字典)

作者: 浪汐颜 | 来源:发表于2019-11-11 11:17 被阅读0次

给定一组整数,还有一个目标数,在给定这组整数中找到两个数字,使其和为目标数,如找到,解是唯一的。找不到则显示 "no answer"。输出的下标按从小到大排序。一重循环加字典实现

输入格式:
在一行中给出这组数。 在下一行输入目标数

输出格式:
在一行中输出这两个数的下标,用一个空格分开。

输入样例1:
在这里给出一组输入。例如:
2,7,11,15
9
输出样例1:
在这里给出相应的输出。例如:
0 1

输入样例2:
在这里给出一组输入。例如:
3,6,9
10
输出样例2:
在这里给出相应的输出。例如:
no answer


解题思路:因为题设已经说了只能使用一重循环加字典实现,所以我们没办法使用双重循环去求出每一个的值,逐一比较。
先建立一个 列表值:差 的字典。
在通过对字典对键的遍历,判断差值是否存在于数字列表中。

n_list = list(map(int, input().split(",")))
n = int(input())

sum_dict = {}
#建立 列表值:差 的字典
for i in n_list:
    if i not in sum_dict.keys():
        sum_dict[i] = n - i
for k,v in sum_dict.items():
    if v in n_list:
        if k != v:#考虑了类似2+2=4这样的数据,所以加了判断
            i = n_list.index(k)
            j = n_list.index(v)
            print("%d %d"%(i, j))
            break
        else:
            i = n_list.index(k)
            j = n_list[i+1:].index(v)+1
            print("%d %d"%(i,j))
            break
else:
    print("no answer")

不过有点值得注意的是,这样的解法感觉有点绕弯子,不如只用一重循环来得直接。如有更符合题意得解法,欢迎互相交流[哭笑]。

相关文章

  • 两数之和(python,一重循环,字典)

    给定一组整数,还有一个目标数,在给定这组整数中找到两个数字,使其和为目标数,如找到,解是唯一的。找不到则显示 "n...

  • 2020-06-22 面试总结

    两数之和遇到后还是很惊讶。。。 下意识用暴力循环,之后想起用字典 当前值做value:剩余值做key查找,反应比较...

  • C语言第六次作业:动态申请内存

    动态申请内存 1. 两数之和 数组二重循环\哈希表 167. 两数之和 II - 输入有序数组数组二重循环\首尾指...

  • python 两数之和

    两数之和 python实现 解法1 不用说耗时长,复杂度 解法2 由于数组.index函数复杂度为O(1),整体复...

  • 两数之和 python

    执行用时为 28 ms 的范例 执行用时为 24 ms 的范例 执行用时为 20 ms 的范例

  • 两数之和 - 双指针、字典

    1. 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整...

  • leetcode - python - 两数之和

    给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。 你可以假设每个输入只对应一种答案,且同样的元素不能被...

  • leetcode两数之和—python

    一、暴力穷举 for i,num in enumerate(nums): for j,num2 in enume...

  • Python-两数之和

    给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的...

  • Python - LeetCode - 两数之和

    描述: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返...

网友评论

      本文标题:两数之和(python,一重循环,字典)

      本文链接:https://www.haomeiwen.com/subject/whxtictx.html