国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【華為OD機(jī)試真題 C++ Java Python】1、滑動(dòng)窗口最大值 | 機(jī)試真題+思路參考+代碼解析

這篇具有很好參考價(jià)值的文章主要介紹了【華為OD機(jī)試真題 C++ Java Python】1、滑動(dòng)窗口最大值 | 機(jī)試真題+思路參考+代碼解析。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。


??個(gè)人博客首頁(yè): KJ.JK
?
??專欄介紹: 定期更新華為OD各個(gè)時(shí)間階段的機(jī)試真題,每日定時(shí)更新,本專欄每篇的文章都會(huì)將使用C++、Python、Java三種語(yǔ)言進(jìn)行更新解答,每個(gè)題目的思路分析都非常詳細(xì),超過百字歡迎大家訂閱學(xué)習(xí),代碼可以直接運(yùn)行使用


一、題目


??題目描述

有一個(gè)N個(gè)整數(shù)的數(shù)組,和一個(gè)長(zhǎng)度為M的窗口,窗口從數(shù)組內(nèi)的第一個(gè)數(shù)開始滑動(dòng)直到窗口不能滑動(dòng)為止,
?
每次窗口滑動(dòng)產(chǎn)生一個(gè)窗口和(窗口內(nèi)所有數(shù)的和),求窗口滑動(dòng)產(chǎn)生的所有窗口和的最大值


??輸入輸出

輸入
第一行輸入一個(gè)正整數(shù)N,表示整數(shù)個(gè)數(shù)。(0<N<100000)
第二行輸入N個(gè)整數(shù),整數(shù)的取值范圍為[-100,100]。
第三行輸入一個(gè)正整數(shù)M,M代表窗口的大小,M<=100000,且M<=N。
?
輸出
窗口滑動(dòng)產(chǎn)生所有窗口和的最大值


??樣例1

輸入
6
12 10 20 30 15 23
3


輸出
68

說明

窗口長(zhǎng)度為3,窗口滑動(dòng)產(chǎn)生的窗口和分別為10+20+30=60,20+30+15=65,30+15+23=6815+23+12=50,

所以窗口滑動(dòng)產(chǎn)生的所有窗口和的最大值為68

二、代碼與思路參考


??C++語(yǔ)言思路


1、讀取輸入的整數(shù)N,表示數(shù)組的長(zhǎng)度

2、讀取輸入的整數(shù)數(shù)組元素,將其存儲(chǔ)在一個(gè)名為arr的向量中

3、讀取輸入的整數(shù)M,表示滑動(dòng)窗口的長(zhǎng)度

4、初始化變量window_sum為前M個(gè)元素的和,即窗口的初始和

5、初始化變量max_sum為window_sum,表示當(dāng)前的最大和

6、從M開始,通過遍歷數(shù)組來移動(dòng)滑動(dòng)窗口

  • 在每個(gè)位置i,通過將窗口最左邊的元素移出窗口并將窗口最右邊的元素移入窗口,更新window_sum的值
  • 檢查window_sum是否大于max_sum,如果是,則將max_sum更新為window_sum

7、遍歷完成后,max_sum將包含滑動(dòng)窗口的最大和

8、輸出max_sum作為結(jié)果


??C++代碼
#include <iostream>
#include <vector>
using namespace std;

int main() {
    int N;
    cin >> N; // 輸入N
    
    vector<int> arr(N);
    for (int i = 0; i < N; i++) {
        cin >> arr[i]; // 輸入數(shù)組元素
    }
    
    int M;
    cin >> M; // 輸入M
    
    int window_sum = 0;
    for (int i = 0; i < M; i++) {
        window_sum += arr[i]; // 計(jì)算初始窗口和
    }
    
    int max_sum = window_sum; // 初始化最大和為初始窗口和
    
    for (int i = M; i < N; i++) {
        window_sum = window_sum - arr[i - M] + arr[i]; // 更新窗口和,減去窗口最左邊的元素,加上窗口最右邊的元素
        max_sum = max(max_sum, window_sum); // 更新最大和
    }
    
    cout << max_sum << endl; // 輸出最大和
    
    return 0;
}



??Java語(yǔ)言思路


1、首先,從輸入中獲取數(shù)組的長(zhǎng)度 N,并創(chuàng)建一個(gè)大小為 N 的整數(shù)數(shù)組 arr

2、使用循環(huán),將輸入的 N 個(gè)整數(shù)依次存儲(chǔ)到數(shù)組 arr 中

3、獲取窗口大小 M

4、初始化一個(gè)變量 windowSum 為 0,用于存儲(chǔ)當(dāng)前窗口內(nèi)元素的和

5、使用一個(gè)循環(huán),計(jì)算初始窗口大小為 M 的子數(shù)組的和,并將結(jié)果存儲(chǔ)在 windowSum 變量中

6、將 windowSum 的值賦給變量 maxSum,作為初始的最大窗口和

7、使用另一個(gè)循環(huán),從第 M 個(gè)元素開始,不斷移動(dòng)滑動(dòng)窗口。在每次迭代中,更新窗口和 windowSum,通過減去窗口最左端的元素并加上窗口最右端的元素。然后,使用 Math.max 方法將 windowSum 和 maxSum 的較大值更新到 maxSum 變量中

8、循環(huán)結(jié)束后,maxSum 中存儲(chǔ)的就是整個(gè)數(shù)組中連續(xù)子數(shù)組的和的最大值

9、最后,輸出 maxSum 的值,即最大窗口和


??Java代碼
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int N = scanner.nextInt();  // 輸入數(shù)組的長(zhǎng)度
        int[] arr = new int[N];
        for (int i = 0; i < N; i++) {
            arr[i] = scanner.nextInt();  // 輸入數(shù)組元素
        }
        int M = scanner.nextInt();  // 窗口大小

        int windowSum = 0;  // 窗口內(nèi)元素的和
        for (int i = 0; i < M; i++) {
            windowSum += arr[i];  // 計(jì)算初始窗口和
        }
        int maxSum = windowSum;  // 初始最大窗口和

        for (int i = M; i < N; i++) {
            windowSum = windowSum - arr[i - M] + arr[i];  // 更新窗口和
            maxSum = Math.max(maxSum, windowSum);  // 更新最大窗口和
        }

        System.out.println(maxSum);  // 輸出結(jié)果
    }
}



??Python語(yǔ)言思路


給定一個(gè)長(zhǎng)度為N的數(shù)組和窗口大小M,我們需要找到滑動(dòng)窗口產(chǎn)生的所有窗口和的最大值。

我們可以使用滑動(dòng)窗口的技巧來解決這個(gè)問題。首先,我們計(jì)算數(shù)組的前M個(gè)元素的和,作為初始窗口和的值。然后,我們從第M+1個(gè)元素開始,每次向右移動(dòng)一個(gè)位置,同時(shí)更新窗口和的值。

具體步驟如下:

1、輸入數(shù)組的長(zhǎng)度N和數(shù)組元素

2、輸入窗口大小M

3、計(jì)算初始窗口和的值,即數(shù)組的前M個(gè)元素的和

4、初始化一個(gè)變量max_sum為初始窗口和的值

5、從第M+1個(gè)元素開始,進(jìn)行以下循環(huán):

   窗口和的值減去滑出窗口的第一個(gè)元素,加上滑入窗口的下一個(gè)元素,更新窗口和的值
   如果當(dāng)前窗口和的值大于max_sum,則更新max_sum為當(dāng)前窗口和的值

6、輸出max_sum作為結(jié)果文章來源地址http://www.zghlxwxcb.cn/news/detail-715151.html


??Python代碼
N = int(input())
arr = list(map(int, input().split()))
M = int(input())

window_sum = sum(arr[:M])
max_sum = window_sum

for i in range(M, N):
    window_sum = window_sum - arr[i - M] + arr[i]
    max_sum = max(max_sum, window_sum)

print(max_sum)


作者:KJ.JK

到了這里,關(guān)于【華為OD機(jī)試真題 C++ Java Python】1、滑動(dòng)窗口最大值 | 機(jī)試真題+思路參考+代碼解析的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 華為OD機(jī)試真題 Java 實(shí)現(xiàn)【矩陣最大值】【2023 B卷 100分】,附詳細(xì)解題思路

    華為OD機(jī)試真題 Java 實(shí)現(xiàn)【矩陣最大值】【2023 B卷 100分】,附詳細(xì)解題思路

    給定一個(gè)僅包含0和1的N*N的二維矩陣,請(qǐng)計(jì)算二維矩陣的最大值。 計(jì)算規(guī)則如下: 1、每行元素按下標(biāo)順序組成一個(gè)二進(jìn)制數(shù)(下標(biāo)越大越排在低位),二進(jìn)制數(shù)的值就是該行的值。矩陣各行值之和為矩陣的值。 2、允許通過向左或向右整體循環(huán)移動(dòng)每行元素來改變各元素在行

    2024年02月08日
    瀏覽(32)
  • 華為OD機(jī)試真題-2023(B卷)-【C++ Java Python】

    我是一名軟件開發(fā)培訓(xùn)機(jī)構(gòu)的老師,我的學(xué)生已有上百人通過了華為OD考試,學(xué)生們每次考完都會(huì)在群里分享交流機(jī)試題目。我會(huì)持續(xù)收集整理機(jī)試真題,幫助更多的學(xué)生通過考試!每道題目包含C++,Java,Python三種解法。 2023.5月,華為OD機(jī)試題目更新為: OD統(tǒng)一考試B卷 ,

    2024年02月09日
    瀏覽(20)
  • 2023華為OD機(jī)試真題【計(jì)算數(shù)組中心位置】【Java Python C++】

    2023華為OD機(jī)試真題【計(jì)算數(shù)組中心位置】【Java Python C++】

    給你一個(gè)整數(shù)數(shù)組nums,請(qǐng)計(jì)算數(shù)組的中心位置。數(shù)組的中心位置是數(shù)組的一個(gè)下標(biāo), 其左側(cè)所有元素相乘的積等于右側(cè)所有元素相乘的積。數(shù)組第一個(gè)元素的左側(cè)積為1,最后一個(gè)元素的右側(cè)積為1。 如果數(shù)組有多個(gè)中心位置,應(yīng)該返回最靠近左邊的那一個(gè),如果數(shù)組不存在

    2024年02月15日
    瀏覽(97)
  • 2023華為OD機(jī)試真題【區(qū)間交疊/貪心算法】【Python Java C++】

    2023華為OD機(jī)試真題【區(qū)間交疊/貪心算法】【Python Java C++】

    給定坐標(biāo)軸上的一組線段,線段的起點(diǎn)和終點(diǎn)均為整數(shù)并且長(zhǎng)度不小于1,請(qǐng)你從中找到最少數(shù)量的線段,這些線段可以覆蓋住所有線段。 輸入描述 第一行輸入為所有線段的數(shù)量,不超過10000,后面每行表示一條線段,格式為”x,y”, x和y 分別表示起點(diǎn)和終點(diǎn),取值范圍是

    2024年02月13日
    瀏覽(20)
  • 華為OD機(jī)試真題2022&2023(Java C++ Python JS)目錄匯總

    華為OD機(jī)試真題2022&2023(Java C++ Python JS)目錄匯總

    本文是華為OD機(jī)試真題(Python 語(yǔ)言) 專欄的目錄貼(持續(xù)更新中…) ??2024華為OD機(jī)試真題(C C++ Java Py JS) B+C+D卷?? ??2024華為OD機(jī)試真題(C語(yǔ)言) B+C+D卷?? ??2024華為OD機(jī)試真題(Python語(yǔ)言) B+C+D卷?? ??2024華為OD機(jī)試真題(Java 語(yǔ)言) B+C+D卷?? ??2024華為OD機(jī)試真題(C++語(yǔ)言)B+C+D卷??

    2024年02月01日
    瀏覽(58)
  • 華為OD機(jī)試真題2022&2023(Java C++ Python JS)真題目錄 + 考點(diǎn) + 通過率

    華為OD機(jī)試真題2022&2023(Java C++ Python JS)真題目錄 + 考點(diǎn) + 通過率

    本文是華為OD機(jī)試真題(Python 語(yǔ)言) 專欄的目錄貼(持續(xù)更新中…) ??2024華為OD機(jī)試真題(C C++ Java Py JS) B+C+D卷?? ??2024華為OD機(jī)試真題(C語(yǔ)言) B+C+D卷?? ??2024華為OD機(jī)試真題(Python語(yǔ)言) B+C+D卷?? ??2024華為OD機(jī)試真題(Java 語(yǔ)言) B+C+D卷?? ??2024華為OD機(jī)試真題(C++語(yǔ)言)B+C+D卷??

    2024年02月05日
    瀏覽(46)
  • 【華為OD機(jī)試】矩陣最大值(python, java, c++, js)

    前言 :本專欄將持續(xù)更新華為OD機(jī)試題目,并進(jìn)行詳細(xì)的分析與解答,包含完整的代碼實(shí)現(xiàn),希望可以幫助到正在努力的你。關(guān)于OD機(jī)試流程、面經(jīng)、面試指導(dǎo)等,如有任何疑問,歡迎聯(lián)系我,wechat:steven_moda;email:nansun0903@163.com;備注:CSDN。 給定一個(gè)僅包含0和1的N*N的二維

    2024年02月11日
    瀏覽(36)
  • 華為OD機(jī)試真題- 區(qū)塊鏈文件轉(zhuǎn)儲(chǔ)系統(tǒng)【2023Q2】【JAVA、Python、C++】

    題目描述: 區(qū)塊鏈底層存儲(chǔ)是一個(gè)鏈?zhǔn)轿募到y(tǒng),由順序的N個(gè)文件組成,每個(gè)文件的大小不一,依次為F1,F2...Fn。隨著時(shí)間的推移,所占存儲(chǔ)會(huì)越來越大。 云平臺(tái)考慮將區(qū)塊鏈按文件轉(zhuǎn)儲(chǔ)到廉價(jià)的SATA盤,只有連續(xù)的區(qū)塊鏈文件才能轉(zhuǎn)儲(chǔ)到SATA盤上,且轉(zhuǎn)儲(chǔ)的文件之和不能超過

    2024年02月10日
    瀏覽(16)
  • 華為OD機(jī)試真題-AI處理器組合【2023Q2】【JAVA、Python、C++】

    題目描述: 某公司研發(fā)了一款高性能AI處理器。每臺(tái)物理設(shè)備具備8顆AI處理器,編號(hào)分別為0、1、2、3、4、5、6、7。編號(hào)0-3的處理器處于同一個(gè)鏈路中,編號(hào)4-7的處理器處于另外一個(gè)鏈路中,不通鏈路中的處理器不能通信,如下圖所示?,F(xiàn)給定服務(wù)器可用的處理器編號(hào)數(shù)組a

    2024年02月02日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包