華為OD機試真題——最小循環子數組 (2025B卷:100分)Java/python/JavaScript/C/C++/GO最佳實現

在這里插入圖片描述

2025 B卷 100分 題型

本專欄內全部題目均提供Java、python、JavaScript、C、C++、GO六種語言的最佳實現方式;
并且每種語言均涵蓋詳細的問題分析、解題思路、代碼實現、代碼詳解、3個測試用例以及綜合分析;
本文收錄于專欄:《2025華為OD真題目錄+全流程解析+備考攻略+經驗分享》

華為OD機試真題《最小循環子數組》:


文章快捷目錄

題目描述及說明

Java

python

JavaScript

C++

C

GO


題目名稱:最小循環子數組


知識點:字符串匹配、KMP算法(或枚舉驗證)
時間限制:1秒
空間限制:256MB
限定語言:不限


題目描述

給定一個由若干整數組成的數組 nums,請檢查數組是否是由某個子數組重復循環拼接而成,并輸出這個最小的子數組。

輸入描述

  • 第一行輸入數組中元素個數 n1 ≤ n ≤ 100000
  • 第二行輸入數組的數字序列 nums,以空格分割,0 ≤ nums[i] ≤ 10

輸出描述
輸出最小的子數組的數字序列,以空格分割。

備注
數組本身是其最大的子數組,循環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次拼接而成。


Java

問題分析

我們需要找到一個數組的最小循環子數組,即該數組可以由該子數組重復拼接而成。解決此問題的關鍵在于確定數組是否由某個子數組重復構成,并找出最小的這樣的子數組。


解題思路

  1. 候選子數組長度的確定:循環子數組的長度必須是原數組長度的因數。
  2. 因數枚舉:找出原數組長度的所有因數,并按從小到大順序檢查。
  3. 循環驗證:對于每個候選長度,驗證數組是否可以由該長度的子數組重復構成。
  4. 輸出結果:找到第一個滿足條件的最小子數組。

代碼實現

import java.util.Scanner;
import java.util.TreeSet;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt(); // 讀取數組長度int[] nums = new int[n];for (int i = 0; i < n; i++) {nums[i] = scanner.nextInt(); // 讀取數組元素}// 生成所有可能的因數(包括n)TreeSet<Integer> factors = new TreeSet<>();for (int i = 1; i * i <= n; i++) {if (n % i == 0) {factors.add(i);factors.add(n / i);}}// 遍歷所有因數,從小到大檢查for (int d : factors) {if (check(nums, d)) { // 驗證當前因數對應的子數組是否符合循環條件printResult(nums, d); // 打印結果return;}}printResult(nums, n); // 最終必能匹配自身(d=n)}private static boolean check(int[] nums, int d) {for (int i = 0; i < nums.length; i++) {if (nums[i] != nums[i % d]) { // 核心驗證邏輯:每個位置必須與子數組對應位置相同return false;}}return true;}private static void printResult(int[] nums, int d) {StringBuilder sb = new StringBuilder();for (int i = 0; i < d; i++) {sb.append(nums[i]);if (i != d - 1) {sb.append(" ");}}System.out.println(sb);}
}

代碼解析

  1. 輸入處理

    int n = scanner.nextInt();
    int[] nums = new int[n];
    for (int i = 0; i < n; i++) {nums[i] = scanner.nextInt();
    }
    
    • 讀取數組長度和元素。
  2. 因數生成

    TreeSet<Integer> factors = new TreeSet<>();
    for (int i = 1; i * i <= n; i++) {if (n % i == 0) {factors.add(i);factors.add(n / i);}
    }
    
    • 遍歷1sqrt(n),收集所有因數并存入有序集合,自動去重并排序。
  3. 循環驗證

    for (int d : factors) {if (check(nums, d)) {printResult(nums, d);return;}
    }
    
    • 從小到大遍歷因數,驗證每個因數對應的子數組是否符合循環條件。
  4. 驗證邏輯

    private static boolean check(int[] nums, int d) {for (int i = 0; i < nums.length; i++) {if (nums[i] != nums[i % d]) {return false;}}return true;
    }
    
    • 核心邏輯:數組的每個元素必須等于其對應子數組位置的元素。
  5. 結果輸出

    private static void printResult(int[] nums, int d) {StringBuilder sb = new StringBuilder();for (int i = 0; i < d; i++) {sb.append(nums[i]);if (i 

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/82479.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/82479.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/82479.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

OpenCv高階(十七)——dlib庫安裝、dlib人臉檢測

文章目錄 前言一、dlib庫簡介二、dlib庫安裝1、本地安裝&#xff08;離線&#xff09;2、線上安裝 三、dlib人臉檢測原理1、HOG 特征提取2、 SVM 分類器訓練3、 滑動窗口搜索4、非極大值抑制&#xff08;NMS&#xff09; 四、dlib人臉檢測代碼1、導入OpenCV計算機視覺庫和dlib機…

AD-PCB--AD20軟件安裝及中英文切換 DAY 2

1.軟件安裝 1.1 軟件包下載 給你一個捷徑&#xff1a; 1.2 安裝過程&#xff08;安裝過的人跳過就好&#xff0c;一般很多都支持懶人安裝&#xff09; 雙擊其中的exe文件 點擊下一步 選擇中文 接受用戶協議 下面這個彈窗有的沒有。 建議勾選導入導出 安裝目錄&#xff0c…

單向循環鏈表與雙向鏈表

單向循環鏈表的原理與應用 思考&#xff1a;對于單向鏈表而言&#xff0c;想要遍歷鏈表&#xff0c;則必須從鏈表的首結點開始進行遍歷&#xff0c;請問有沒有更簡單的方案實現鏈表中的數據的增刪改查&#xff1f; 回答&#xff1a;是有的&#xff0c;可以使用單向循環的鏈表進…

Windows鼠標掉幀測試與修復

前言 這兩天突然發現鼠標似乎有掉幀&#xff0c;但是掉的又不太明顯&#xff0c;用著感覺似乎快速移動的時候會有一瞬間卡一下&#xff0c;但是眼睛又看不清楚&#xff0c;不太確定是不是自己的心理作用&#xff0c;非常難受。 如何判斷鼠標是否掉幀 根據我的經驗&#xff0…

U 盤數據恢復全攻略

目錄 &#x1f4be; U盤數據誤刪怎么辦&#xff1f;兩款實用工具助你找回丟失文件&#xff01;1?? Recover My Files&#xff1a;數據恢復的得力助手&#x1f4cc; 主要特點&#x1f6e0; 使用步驟詳解1. 下載與安裝2. 啟動軟件并選擇恢復類型3. 選擇U盤所在分區4. 選擇文件恢…

HarmonyOS NEXT~鴻蒙系統運維:全面解析與最佳實踐

HarmonyOS NEXT&#xff5e;鴻蒙系統運維&#xff1a;全面解析與最佳實踐 摘要 本文深入探討鴻蒙(HarmonyOS)系統的運維管理&#xff0c;從架構特點到日常維護操作&#xff0c;全面分析這一全場景分布式操作系統的運維要點。文章將介紹鴻蒙系統特有的分布式能力運維管理、性能…

基于 STM32 的智慧農業溫室控制系統設計與實現

摘要 本文提出一種基于 STM32 微控制器的智慧農業溫室控制系統設計方案,通過集成多類型環境傳感器、執行機構及無線通信模塊,實現對溫室內溫濕度、光照、土壤濕度等參數的實時監測與自動調控。文中詳細闡述硬件選型、電路連接及軟件實現流程,并附關鍵代碼示例,為智慧農業領…

Appium+python自動化(五)- 模擬器

簡介 Appium是做安卓自動化的一個比較流行的工具&#xff0c;對于想要學習該工具但是又局限于沒 android 手機來說&#xff0c;可以通過安卓模擬器來解決該問題&#xff0c;下面就講解使用appium連接安卓模擬器的操作步驟。而是由于手機數據線問題&#xff0c;也只好先用模擬器…

汽車充電樁專用ASCP210系列電氣防火限流式保護器

1.概述汽車充電樁專用電氣防火限流式保護器 電氣防火限流式保護器可有效克服傳統斷路器、空氣開關和監控設備存在的短路電流大、切斷短路電流時間長、短路時產生的電弧火花大&#xff0c;以及使用壽命短等弊端&#xff0c;發生短路故障時&#xff0c;能以微秒級速度快速限制短…

Linux中磁盤分區與掛載

一、磁盤劃分 1.1 了解磁盤 硬盤的接口類型 接口類型發展方向應用場景IDESATA I/II/III個人PC機SCSISAS服務器上 磁盤命名規則 OSIDE(并口)SATA(串口)SCSIRHEL5/dev/hda/dev/sda/dev/sdaRHEL6/dev/sda/dev/sda/dev/sdaRHEL7/dev/sda/dev/sda/dev/sda 1.2 磁盤劃分 磁盤劃…

【數據分析】什么是特征蒸餾?

引言 —— “ 在數據洪流中提煉真金——解密特征蒸餾的藝術。” 在數據爆炸的時代&#xff0c;我們每天產生的信息量已遠超人類處理能力的極限。當企業擁有百萬維的用戶行為數據&#xff0c;醫療研究者面對TB級的基因測序記錄&#xff0c;工程師試圖從千萬張圖像中識別關鍵模式…

機器學習筆記【Week4】

一、 為什么要用神經網絡&#xff1f; 邏輯回歸只能處理線性可分問題。例如&#xff0c;經典的 XOR 異或問題無法用單層邏輯回歸準確分類。神經網絡通過多層結構和非線性激活函數&#xff0c;能學習復雜的決策邊界&#xff0c;解決非線性問題。 二、神經網絡的基本組成 神經網…

java交易所,多語言,外匯,黃金,區塊鏈,dapp類型的,支持授權,劃轉,挖礦(源碼下載)

目前這套主要是運營交易所類型的&#xff0c;授權的會貴點&#xff0c;編譯后的是可以直接跑的&#xff0c;圖片也修復了&#xff0c;后門也掃了 都是在跑的項目支持測&#xff0c;全開源 源碼下載&#xff1a;https://download.csdn.net/download/m0_66047725/90887047 更多…

2025CCPC河北省賽題解

題目區分度不錯&#xff0c;不過兩題手快銅確實沒想到。 Attention is all you need&#xff01; H - What is all you need? 簽到題 #include <bits/stdc.h> #define x first #define y second #define int long long #define double long doubleusing namespace st…

【IOS】【OC】【應用內打印功能的實現】如何在APP內實現打印功能,連接本地打印機,把想要打印的界面打印成圖片

【IOS】【OC】【應用內打印功能的實現】如何在APP內實現打印功能&#xff0c;連接本地打印機&#xff0c;打印想打印的界面 設備/引擎&#xff1a;Mac&#xff08;14.1.1&#xff09;/cocos 開發工具&#xff1a;Xcode 開發語言&#xff1a;OC/C 開發需求&#xff1a;工程中…

AWS WebRTC:獲取信令服務節點和ICE服務節點

建立WebRTC的第一步是獲取信令服務節點和ICE服務節點。 前提條件是有訪問AWS的密鑰&#xff0c;主要是ak&#xff0c;sk&#xff0c;token&#xff0c;我這邊是業務云有接口可以返回這些信息&#xff0c;所以我直接從業務云獲取。 先介紹一下什么是ak&#xff0c;sk&#xff…

C++23 新成員函數與字符串類型的改動

文章目錄 引言std::basic_string::contains 與 std::basic_string_view::contains (P1679R3)功能介紹示例代碼優勢 禁止從 nullptr 構造 std::basic_string 和 std::basic_string_view (P2166R1)背景改動影響 std::basic_string_view 的顯式范圍構造函數 (P1989R2)功能介紹示例…

VMware-MySQL主從

MySQL主從 服務器信息 服務器類型角色主機地址主機名稱虛擬機master192.168.40.128test-1虛擬機slave192.168.40.129test-2 Master 配置&#xff08;192.168.40.128&#xff09; 刪除自動生成的配置 /var/lib/mysql/auto.cnf [roottest-1 ~]# rm -rf /var/lib/mysql/auto.…

Java組合、聚合與關聯:核心區別解析

在Java中&#xff0c;組合、聚合和關聯是描述類之間關系的三種不同方式&#xff0c;它們的核心區別在于對象間的依賴強度和生命周期管理。以下是它們的詳細對比&#xff1a; 1. 關聯&#xff08;Association&#xff09; 定義&#xff1a;最基本的類間關系&#xff0c;表示一個…

如何保護網絡免受零日漏洞攻擊?

零日漏洞&#xff08;Zero-Day Vulnerability&#xff09;是指軟件或系統中尚未被廠商發現或修補的安全漏洞。這個名稱中的“零日”意味著&#xff0c;從漏洞被發現到廠商發布修復補丁的時間是零天&#xff0c;也就是說&#xff0c;黑客可以利用這個漏洞進行攻擊&#xff0c;而…