华为OD机试真题-最小循环子数组-2023年OD统一考试(B卷)

题目描述:

给定一个由若干整数组成的数组nums ,请检查数组是否是由某个子数组重复循环拼接而成,请输出这个最小的子数组。

输入描述:

第一行输入数组中元素个数n,1 <= n <= 100000
第二行输入数组的数字序列nums,以空格分割,0 <= nums[i] < 10;

输出描述:

输出最小的子数组的数字序列,以空格分割;

补充说明:

数组本身是其最大的子数组,循环1次可生成的自身;

示例1

输入:

9
1 2 1 1 2 1 1 2 1

输出:

1 2 1

说明:

数组[1,2,1,1,2,1,1,2,1]可由子数组[1,2,1]重复循环3次拼接而成


#include 
#include 
using namespace std;
int main() {
    int n;
    cin >>n;
    vector data(n,0);
    for(int i=0;i> data[i];
    }
        int res = 0;
    
    for(int cur=0; cur < n; ++cur){
        if(n % (cur+1))
            continue;
        int k &

你可能感兴趣的:(华为OD机试题库2023年,华为od,算法,链表)