题目描述
给定一个随机的整数数组(可能存在正整数和负整数)nums
,
请你在该数组中找出两个数,其和的绝对值(|nums[x]+nums[y]|)
为最小值
并返回这两个数(按从小到大返回)以及绝对值。
每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
输入描述
一个通过空格空格分割的有序整数序列字符串,最多1000
个整数,
且整数数值范围是[-65535,65535]
输出描述
两个数和两数之和绝对值
示例一
输入
-1 -3 7 5 11 15
输出
-3 5 2
因为|nums[0]+nums[2]|=|-3+5|=2最小, 所以返回-3 5 2
代码实现
# coding:utf-8
class Solution:
def minAbsSum(self, nums):
total = 65535
res = []
sl = len(nums)
for i in range(sl):
for j in range(i, sl):
if int(nums[i]) + int(nums[j]) < total:
total = abs(int(nums[i]) + int(nums[j]))
res = [nums[i], nums[j]]
res = res + list(str(total))
return ' '.join(res)
if __name__ == '__main__':
s = list(input('input arr:').split(' '))
solution = Solution()
print(solution.minAbsSum(s))