力扣3381. 長度可被 K 整除的子數組的最大元素和

在這里插入圖片描述
在這里插入圖片描述
由于數據范圍是2*10^5所以必然是遍歷一次,子數組必定要用到前綴和,之前的題目中總是遇到的是子數組的和能不能被k整除,而這里不一樣的是子數組的長度能不能被k整除,如果單純的枚舉長度必定超時,而看看題解得出的思路,我在做之前的題目中也有類似的。
首先,我們要想判斷一個長度能不能被k整除,實際上就是判斷 (j-i)%k==0 ,也就是說 j%k=i%k 同余定理,而求子數組的最大元素和,實際上就是求sum[j]-sum[i],那么我們如何找這個符合條件的i呢,我們只需要讓sum[i]盡可能的小,sum[j]盡可能的大,在滿足這兩個條件的情況下,實際上就是讓我們求:sum[j]-sum[j%k(i)]的最大值sum[j]它是可以在枚舉的過程中不斷更新的,而我們需要確定的是j%k也就是i的最小值。
我們可以用一個最小值數組來保存每遇到一個j,它取模后的值(也就是i)的最小值
這樣我們就能在枚舉的過程中不斷的更新sum[i]的最小值,從而求出子數組和的最大值。
下面是求與j同余的i的最小值的方法

int i =j%k;minn[i]=min(minn[i],sum[j]);

下面是通過代碼:

class Solution {
public:long long sum[200005];
long long minn[200005];long long maxSubarraySum(vector<int>& nums, int k) {for(int i=0;i<k;i++){minn[i]=LLONG_MAX/2;}minn[0]=0;for(int i=0;i<nums.size();i++){sum[i+1]=sum[i]+nums[i];}//我們要想判斷一個長度能不能被k整除//實際上就是判斷 (j-i)%k==0 //也就是說 j%k=i%k 同余定理//而求子數組的最大元素和//實際上就是求sum[j]-sum[i]//那么我們如何找這個符合條件的i呢//我們可以在//我們只需要讓sum[i]盡可能的小//sum[j]盡可能的大//不斷更新結果long long ans=LLONG_MIN;for(int j=1;j<=nums.size();j++){int i=j%k;ans=max(ans,sum[j]-minn[i]);minn[i]=min(minn[i],sum[j]);} return ans;}
};

要注意的是minn[i]初始化為LLONG_MAX/2,因為在減的過程中如果初始化為LLONG_MAX,那么相減的值可能是一個正數,而不是負數了,這樣在 ans=max(ans,sum[j]-minn[i]);就會更新到錯誤的答案,我之前沒有加出錯了,所以必須加上。還有一點要注意如果j%k==0,也就是i=0,那么它初始化的最小值應該為0,也就是minn[0]=0;而不是LLONG_MAX/2;
時間復雜度O(n)。

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

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

相關文章

基于SSM的勤工助學系統的設計與實現

第1章 摘要 基于SSM框架的勤工助學系統旨在為學生、用工部門和管理員提供高效便捷的管理平臺。系統包括學生端、用工部門端和管理員端&#xff0c;涵蓋了從崗位發布、申請審核、工時記錄、薪資管理到數據統計等完整的功能需求。 學生可以通過系統首頁瀏覽最新的崗位信息和公告&…

2025年06月30日Github流行趨勢

項目名稱&#xff1a;twenty 項目地址 URL&#xff1a;https://github.com/twentyhq/twenty項目語言&#xff1a;TypeScript歷史 star 數&#xff1a;31,774今日 star 數&#xff1a;1,002項目維護者&#xff1a;charlesBochet, lucasbordeau, FelixMalfait, Weiko, bosiraphae…

creo 2.0學習筆記

Creo軟件從入門到精通——杜書森 1.1 Creo基本建模過程介紹 新建-零件-改名稱-取消使用默認模板&#xff0c;是因為默認的是英制尺寸&#xff0c;自定義可選擇mmns_part_solid&#xff0c;模板主要是設置模型的單位拉伸-選取FRONT-點擊草繪視圖&#xff0c;可進行草繪旋轉——…

ZNS初步認識—GPT

1. ZNS SSD 的基本概念 Zoned Namespace (ZNS): ZNS 是一種新的NVMe接口規范&#xff0c;它將SSD的邏輯塊地址空間劃分為多個獨立的、固定大小的“區域”&#xff08;Zones&#xff09;。區域 (Zone): ZNS SSD 的基本管理單元。每個區域都有自己的寫入指針&#xff08;write p…

【seismic unix生成可執行文件-sh文件】

Shell腳本文件&#xff08;.sh文件&#xff09;簡介 Shell腳本文件&#xff08;通常以.sh為擴展名&#xff09;是一種包含Shell命令的文本文件&#xff0c;用于在Unix/Linux系統中自動化執行任務。它由Shell解釋器&#xff08;如Bash、Zsh等&#xff09;逐行執行&#xff0c;常…

Debezium日常分享系列之:在 Kubernetes 上部署 Debezium

Debezium日常分享系列之&#xff1a;在 Kubernetes 上部署 Debezium 先決條件步驟部署數據源 (MySQL)登錄 MySQL db將數據插入其中部署 Kafka部署 kafdrop部署 Debezium 連接器創建 Debezium 連接器 Debezium 可以無縫部署在 Kubernetes&#xff08;一個用于容器編排的開源平臺…

利潤才是機器視覺企業的的“穩定器”,機器視覺企業的利潤 = (規模經濟 + 技術差異化 × 場景價值) - 競爭強度

影響機器視覺企業盈利能力的關鍵因素。這個公式本質上反映了行業的核心動態:利潤來自成本控制(規模化效應)和差異化優勢(技術壁壘與場景稀缺性的協同),但被市場競爭(內卷程度)所侵蝕。下面我將一步步拆解這個公式,結合機器視覺行業的特點(如工業自動化、質檢、安防、…

EPLAN 中定制 自己的- A3 圖框的詳細指南(一)

EPLAN 中定制 BIEM - A3 圖框的詳細指南 在智能電氣設計領域&#xff0c;圖框作為圖紙的重要組成部分&#xff0c;其定制的規范性和準確性至關重要。本文將以北京經濟管理職業學院人工智能學院的相關任務為例&#xff0c;詳細介紹在 EPLAN 軟件中定制 BIEM - A3 圖框的全過程…

macbook開發環境的配置記錄

前言&#xff1a;好多東西不記錄就會忘記 git ssh配置 當我們的沒有配置git ssh的時候&#xff0c;使用ssh下載的時候會顯示報錯“make sure you have the correct access rights and respository exits" 如何解決&#xff0c;我們先在命令行檢查檢查一下用戶名和郵箱是…

GitLab 18.1 高級 SAST 已支持 PHP,可升級體驗!

GitLab 是一個全球知名的一體化 DevOps 平臺&#xff0c;很多人都通過私有化部署 GitLab 來進行源代碼托管。極狐GitLab 是 GitLab 在中國的發行版&#xff0c;專門為中國程序員服務。可以一鍵式部署極狐GitLab。 學習極狐GitLab 的相關資料&#xff1a; 極狐GitLab 官網極狐…

[學習]M-QAM的數學原理與調制解調原理詳解(仿真示例)

M-QAM的數學原理與調制解調原理詳解 QAM&#xff08;正交幅度調制&#xff09;作為現代數字通信的核心技術&#xff0c;其數學原理和實現方法值得深入探討。本文將分為數學原理、調制解調原理和實現要點三個部分進行系統闡述。 文章目錄 M-QAM的數學原理與調制解調原理詳解一、…

圖書管理系統練習項目源碼-前后端分離-使用node.js來做后端開發

前端學習了這么久了&#xff0c;node.js 也有了一定的了解&#xff0c;知道使用node也可以來開發后端&#xff0c;今天給大家分享 使用node 來做后端&#xff0c;vue來寫前端&#xff0c;做一個簡單的圖書管理系統。我們在剛開始學習編程的時候&#xff0c;需要自己寫大量的項目…

【甲方安全視角】企業建設下的安全運營

文章目錄 一、安全運營的概念與起源二、安全運營的職責與定位三、安全運營工程師的核心能力要求四、安全運營的典型場景與應對技巧1. 明確責任劃分,避免“醫生做保姆”2. 推動機制:自下而上 vs. 自上而下3. 宣傳與內部影響力建設五、安全運營的戰略意義六、為何需要安全原因在…

03認證原理自定義認證添加認證驗證碼

目錄 大綱 一、自定義資源權限規則 二、自定義登錄界面 三、自定義登錄成功處理 四、顯示登錄失敗信息 五、自定義登錄失敗處理 六、注銷登錄 七、登錄用戶數據獲取 1. SecurityContextHolder 2. SecurityContextHolderStrategy 3. 代碼中獲取認證之后用戶數據 4. 多…

IPLOOK 2025上半年足跡回顧:連接全球,步履不停

2025年上半年&#xff0c;IPLOOK積極活躍于全球通信舞臺&#xff0c;足跡橫跨亞洲、歐洲、非洲與北美洲&#xff0c;我們圍繞5G核心網、私有網絡、云化架構等方向&#xff0c;向來自不同地區的客戶與合作伙伴展示了領先的端到端解決方案&#xff0c;深入了解各地市場需求與技術…

【Kafka】docker 中配置帶 Kerberos 認證的 Kafka 環境(全過程)

1. 準備 docker 下載鏡像 docker pull centos/systemd&#xff0c;該鏡像是基于 centos7 增加了 systemd 的功能&#xff0c;可以更方便啟動后臺服務 啟動鏡像 使用 systemd 功能需要權限&#xff0c;如果是模擬 gitlab services 就不要使用 systemd 的方式啟動 如果不使用 s…

用Python構建一個可擴展的多網盤聚合管理工具 (以阿里云盤為例)

摘要 本文旨在從開發者視角&#xff0c;探討并實踐如何構建一個命令行界面的、支持多網盤聚合管理的工具。我們將以阿里云盤為例&#xff0c;深入解析其API認證與核心操作&#xff0c;并用Python從零開始實現文件列表、重命名、分享等功能。更重要的是&#xff0c;本文將重點討…

筑牢網絡安全屏障

在數字化浪潮席卷全球的今天&#xff0c;網絡空間已成為繼陸、海、空、天之后的 “第五疆域”&#xff0c;深刻影響著國家政治、經濟、軍事等各個領域。“沒有網絡安全就沒有國家安全”&#xff0c;這句論斷精準道出了網絡安全與國家安全之間密不可分的關系。? 網絡安全關乎國…

計算機網絡(一)層

一、分層 分層的意義&#xff1a;簡化復雜性、提高靈活性、促進標準化 &#xff08;1&#xff09;法律上國際標準——OSI體系結構 &#xff08;2&#xff09;事實上的網絡標準——TCP/IP體系結構 TCP&#xff1a;運輸層的協議 IP&#xff1a;網際層的一個協議 網絡接口層&…

STM32 rs485實現中斷DMA模式收發不定長數據

在STM32F103上使用TD301D485H模塊通過USB轉485/422串口線與電腦通信 TXD (TD301D485H) -> PA2 (STM32F103)RXD (TD301D485H) -> PA3 (STM32F103)CON (TD301D485H) -> PA1 (STM32F103) 由于485是半雙工通信&#xff0c;需要在發送和接收時控制方向引腳&#xff08;CO…