PDD算法题

题目:

问题解析

给定一个长度为n的整数序列a1,a2,...,an,我们需要判断是否存在另一个等长的整数序列b1,b2,...,bn,使得对于任意的1≤i<n,都存在1≤j,k≤n,使得ai等于bj与bk的差(即ai = bj - bk)。

输入描述

  • 第一行是一个整数t,表示测试用例的数量(1≤t≤10)。
  • 对于每组测试用例:第一行是一个整数n,表示序列的长度(1≤n≤10)。第二行是n个整数a1,a2,...,an,这些整数以空格隔开,且它们的绝对值不超过10^6(-10^6≤a≤10^6)。

求解思路:

不知道咋写,只想了一部分方法:数组有0或者有重复元素,数组两数之差也在数组中,这些情况可以,剩下的不知道了

def func(nums):
    if 0 in nums:
        return True     #有0
    sorted(nums)
    nums1 = set(nums)
    if len(nums1) < len(nums):  #有重复元素
        return True
    for i in range(len(nums)):
        for j in range(i+1, len(nums)):

            if nums[j] - nums[i] in nums and nums[j] - nums[i] != nums[i]:  #两数差值在数组中
                return True
    return False

nums1 = [3, 5, 7, 8, 10]
nums = [3, 7, 9, 10]
print(func(nums))
全部评论
n只有10,那么两两差值最多只有90个,对这个东西去重,看看去重后大小是否小于等于n,是这样子吗?
点赞 回复 分享
发布于 10-04 15:45 广东
这是笔试还是面试
点赞 回复 分享
发布于 10-05 15:10 北京

相关推荐

2 收藏 评论
分享
牛客网
牛客企业服务