5-10两数之和

发布时间:2026/7/13 22:06:42

5-10两数之和 给定一组整数还有一个目标数在给定这组整数中找到两个数字使其和为目标数如找到解是唯一的。找不到则显示 no answer。输出的下标按从小到大排序。用一重循环加字典实现。输入格式:在一行中给出这组数。在下一行输入目标数输出格式:在一行中输出这两个数的下标用一个空格分开。nlist(map(int,input().split(,))) mint(input()) s{} fFalse for i in range(len(n)): an[i] bm-a if b in s: print(s[b],i) fTrue break s[a]i if not f: print(no answer)知识点说明一重循环只需遍历一次数组O(n) 时间复杂度字典哈希表用s[a] i存值-下标查找 O(1)查找逻辑对当前数a查所需数b m - a是否在字典中输出顺序字典里存的下标一定更小直接先输出它再输出当前 i唯一解找到第一个就 break保证唯一题目要求运用一重循环加字典实现上面的代码正是如此不过我还写了一段用两重循环进行的代码.nlist(map(int,input().split(,))) mint(input()) fFalse for i in range(len(n)): for j in range(i1,len(n)): if n[i]n[j]m: print(i,j) fTrue break if not f: print(no answer)还有这种方法nlist(map(int,input().split(,))) mint(input()) s{} fFalse for i,a in enumerate(n): bm-a if b in s: print(s[b],i) fTrue break s[a]i if not f: print(no answer)一重循环只需遍历一次数组O(n) 时间复杂度字典查找 O(1)用哈希表快速判断需要的数是否出现过enumerate 简洁同时拿下标和值不用写range(len(n))自动保证顺序字典里存的下标一定比当前小输出自然从小到大找到即停题目保证解唯一找到第一个就 break代码短小清晰逻辑集中没有冗余

相关新闻