Python :和为S的两个数字
来源:互联网 发布:ubuntu 文字编辑 编辑:程序博客网 时间:2024/05/29 04:48
牛客网上的剑指offer在线编程题:
题目描述:
输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
输出描述:
对应每个测试案例,输出两个数,小的先输出。方法一:
# -*- coding:utf-8 -*-class Solution: def FindNumbersWithSum(self, array, tsum): all = [] for i in range(len(array)): for j in range(i + 1, len(array)): if array[i] + array[j] == tsum: seq = [array[i], array[j]] all.append(seq) break if len(all) > 1: pro_all = {} for k in range(len(all)): pro = all[k][0] * all[k][1] pro_all[k] = pro pro_sorted = sorted(pro_all.items(), key = lambda item: item[1]) return all[pro_sorted[0][0]] elif len(all) == 1: return all[0] else: return []
方法二:
# -*- coding:utf-8 -*-class Solution: def FindNumbersWithSum(self, array, tsum): if array is None : return [] if len(array) == 0: return [] i = 0 j = len(array) - 1 while i < j: if array[i] + array[j] == tsum: return array[i], array[j] elif array[i] + array[j] < tsum: i += 1 else: j -= 1 return []
0 0
- Python :和为S的两个数字
- 和为S的两个数字
- 和为S的两个数字
- 找出和为S的两个数字
- 和为S的两个数字
- 【5】和为s的两个数字
- 和为S的两个数字
- 和为s的两个数字
- 和为s的两个数字
- 和为S的两个数字
- 和为S的两个数字
- 和为S的两个数字
- 和为s的两个数字
- 和为s的两个数字
- 牛客网 | 和为S的两个数字
- 和为s的两个数字
- 和为S的两个数字
- 和为S的两个数字
- 用VNC从WIN7远程桌面显示Ubuntu 看到两个桌面问题解决。
- java集合框架图
- 自动循迹小车系统方案设计(一)
- 蓝桥杯省赛16
- 安装JDK1.8安装与配置
- Python :和为S的两个数字
- java栈和队列
- LeetCode452. Minimum Number of Arrows to Burst Balloons题解
- ZOJ-3954-Seven-Segment Display【17th浙大校赛】
- Android集成3.0+UMENG推送筛选不精确问题
- LeetCode之路:557. Reverse Words in a String III
- linux文件目录管理
- Win7 x32 x64系统安装
- 快速排序C实现