Huawei ODマシンテスト-ほとんどのグループが合併

質問の説明

整数配列のセットが複数あるため、それらを新しい配列にマージする必要があります。
マージルールでは、各配列から固定長の内容を順番に取り出し、新しい配列にマージします。
内容は削除されます。
行が固定長未満または空の場合、
残りの内容は直接取り出されます。新しい配列に配置され、次の行に進みます。
たとえば、サンプル 1 では、長さ 3 を取得するには、まず最初の行を走査して 2、5、6 を取得し、次に
2 番目の行を走査して 1、7、4 を取得し、次に最初の行にループバックして
7、9 を取得します。 , 5; 2 番目の行を再度トラバースして 3、4 を取得し、
最初の行に戻って 7 を取得し、それらを結合して最終結果を形成します。

説明を入力してください

最初の行は各読み取りの固定長です。20<长度<10
目は整数配列の数0<数目<1000
3 行3~n目はマージする必要がある配列です。異なる配列は復帰と改行で区切られ、配列
の内部は配列はカンマで区切られます。100最大値は要素以下

出力の説明

新しい配列をカンマで区切って出力します。

例1

入力

3
2
2,5,6,7,9,5,7
1,7,4,3,4

出力

2,5,6,1,7,4,7,9,5,3,4,7

例 2

入力

4
3
1,2,3,4,5,6
1,2,3
1,2,3,4

出力

1,2,3,4,1,2,3,1,2,3,4,5,6

コード

# coding:utf-8
import numpy


class Solution:
    def arrMerge(self, n, m, arrs):
        res = ''
        while m > 0:
            for i in range(len(arrs)):
                arr = arrs[i]
                if len(arr) > n-1:
                    res = res + ','.join(arr[:n])+','
                    arr = arr[n:]
                elif (len(arr) <= n-1) and (len(arr) > 0):
                    res = res + ','.join(arr)+','
                    arr = []
                    m -= 1
                elif len(arr) == 0:
                    m -= 1
                arrs[i] = arr
        return res[:-1]


if __name__ == "__main__":
    n = int(input("请输入目标数组大小:"))
    m = int(input("请输入数组数量:"))
    arrs = []
    for k in range(m):
        si = input("请输入数组,用,分割:").split(',')
        s = numpy.array(si)
        arrs.append(s)
    solution = Solution()
    print(solution.arrMerge(n, m, arrs))

おすすめ

転載: blog.csdn.net/SD_JZZ/article/details/132305092