【2019校招真题】漂流船问题(python)
漂流船问题_牛客网
https://www.nowcoder.com/practice/0e6cb06ec63148ed952f887a787f0103?tpId=98&tqId=32869&tPage=3&rp=3&ru=/ta/2019test&qru=/ta/2019test/question-ranking
解题思路
对数组array进行排序,使用双指针i和j,分别指向最小值和最大值,若array[i]+array[j]小于limit,则结果result加1,并且i + 1、j - 1;否则若array[j]小于limit,则result加1,并且j - 1,最后返回result
完整代码
nums = list(map(int, input().split())) nums.sort() limit = int(input()) def calc_nums(nums, limit): i = 0 j = len(nums) - 1 result = 0 while i <= j: if nums[i] + nums[j] <= limit: i += 1 j -= 1 result += 1 elif nums[j] <= limit: j -= 1 result += 1 else: return 0 return result print(calc_nums(nums, limit))