📜  串联包含所有数字的对(1)

📅  最后修改于: 2023-12-03 15:35:57.433000             🧑  作者: Mango

主题:串联包含所有数字的对

本题目要求从一个整数数组中找到所有的包含0-9数字对的数字对,并将它们串联起来。

示例
  • 数组 nums = [11,21,31,41,51,61,71,81,91], 返回 [1121, 2121, 3121, 4121, 5121, 6121, 7121, 8121, 9121]
  • 数组 nums = [456,789,103,304,506,607,708,809,901], 返回 []
思路

在这个问题中,我们将使用两个指针i和j。首先,我们从位置0和1开始,并按照顺序遍历数组中的所有对。对每个对,我们将检查它们是否包含所有数字0-9,如果满足要求,则将它们串联在一起。

代码

下面是使用Python实现的代码片段:

class Solution:
    def find_pairs(self, nums: List[int]) -> List[int]:
        res = []
        for i in range(len(nums)-1):
            for j in range(i+1, len(nums)):
                if self.contains_all_digits(nums[i], nums[j]):
                    res.append(int(str(nums[i])+str(nums[j])))
                    res.append(int(str(nums[j])+str(nums[i])))
        return res
    
    def contains_all_digits(self, num1, num2):
        digits = set([0,1,2,3,4,5,6,7,8,9])
        while num1 > 0:
            digits.discard(num1 % 10)
            num1 //= 10
        while num2 > 0:
            digits.discard(num2 % 10)
            num2 //= 10
        return not digits

该代码的时间复杂度为O(n^2),其中n为输入数组的长度。