【算法實戰】每日一題:將某個序列中內的每個元素都設為相同的值的最短次數(差分數組解法,附概念理解以及實戰操作)

題目

將某個序列中內的每個元素都設為相同的值的最短次數

1.差分數組(后面的減去前面的值存儲的位置可以理解為中間)

差分數組用于處理序列中的區間更新和查詢問題。它存儲序列中相鄰元素之間的差值,而不是直接存儲每個元素的值

怎么對某一段區間的值增加X

利用差分數組的特性來實現對某個區間 [L, R] 內的每個元素增加一個值 X 的操作。

差分數組存儲的是每個元素與其前一個元素之間的差值。

在區間的起始位置 L 處將差分數組增加 X,相當于將該區間后面的所有元素都增加了 X。

然后,在區間的結束位置 R+1 處將差分數組減去 X,以抵消掉對后續元素的影響。這樣就實現了對整個區間內每個元素增加 X 的操作。

2. 解決方案思路

在差分數組中,可以執行兩種操作:對于正數和負數構成的區間,可以對區間內的每個值增加或減少一個數來實現值相同;(本質上是一種相互抵消)

對于那些無法配對的正數或負數,可以考慮將當前位置與超出序列范圍的位置進行操作,相當于是右邊的區間內所有值都受到影響。

基于這個思路,我們可以通過統計序列中正數和負數的個數,通過第一種操作將它們抵消,然后通過第二種操作將剩余的正數或負數變成 0,從而實現所有值相同的目標。

在這個問題中,實際上是要求找到序列中正數或負數的最大值,以確定最少的調整次數,使得所有值相同。(注意這里不是正負數的個數,而是正負數里面的最大值)

3. 解決方案

.
def main():n = int(input())a=[]for i in range(n):a.append(int(input()))passsub = [0] * (n+1)num1 = 0num2 = 0for i in range(1,n):sub[i] = a[i] - a[i - 1]if sub[i] > 0:num1 += sub[i] else:num2 += sub[i]print(max(num1, -num2))if __name__ == '__main__':main()

END

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

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

相關文章

STM32 入門教程(江科大教材)#筆記2

3-4按鍵控制LED /** LED.c**/ #include "stm32f10x.h" // Device headervoid LED_Init(void) {/*開啟時鐘*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //開啟GPIOA的時鐘/*GPIO初始化*/GPIO_InitTypeDef GPIO_InitStructure;GPIO_I…

關系數據庫:關系運算

文章目錄 關系運算并(Union)差(Difference)交(Intersection)笛卡爾積(Extended Cartesian Product)投影(projection)選擇(Selection)除…

微信小程序中應用van-calendar時加載時間過長,以及設置min-data無效的問題解決

一、我們微信小程序中應用van-calendar時,如果沒有設置min-data,那么頁面的加載時間會非常長,所以,一定一定要配置min-data; 二、vue中min-data的寫法是:min-data“new Date(2023, 0, 1)”,而在小程序中的寫…

docker使用docker logs命令查看容器日志的幾種方式

以下是如何使用docker logs命令的基本示例: docker logs [容器ID或名稱]如果想要實時查看日志,可以加上-f參數,這樣日志就會像使用tail -f命令一樣實時輸出。 docker logs -f [容器ID或名稱]如果只想查看最近幾行的日志,可以使用…

讓表單引擎插上AI的翅膀-記馳騁表單引擎加入AI升級

讓表單引擎插上AI的翅膀 隨著科技的飛速發展,人工智能(AI)已經逐漸滲透到我們工作和生活的每一個角落。在數字化辦公領域,表單引擎作為數據處理和流程自動化的重要工具,也迎來了與AI技術深度融合的新機遇。讓表單引擎…

Java對象的比較——equals方法,Comparable接口,Comparator接口

Java對象的比較——equals方法,Comparable接口,Comparator接口 1. equals方法2. Comparable接口3. Comparator接口 1. equals方法 在判斷兩個整數是否相同時,我們可以使用以下方式: System.out.println(1 2); System.out.printl…

安防綜合管理系統EasyCVR平臺GA/T1400視圖庫:基于XML的消息體格式

GA/T 1400標準的應用范圍廣泛,涵蓋了公安系統的視頻圖像信息應用系統,如警務綜合平臺、治安防控系統、交通管理系統等。在視頻監控系統中,GA/T 1400公安視圖庫的對接是實現視頻圖像信息傳輸、處理和管理的重要環節。 以視頻匯聚EasyCVR視頻監…

【SpringBoot】怎么在一個大的SpringBoot項目中創建多個小的SpringBoot項目,從而形成子父依賴

父子項目工程創建 步驟 先創建父項目 具體操作步驟請看本文章:使用maven工程創建spring boot項目 創建子項目 file- project structure module–new module 剩下步驟請看創建父工程時的操作使用maven工程創建spring boot項目 應用 確認即可 之后創建啟動類…

ARM32開發——LED驅動開發

🎬 秋野醬:《個人主頁》 🔥 個人專欄:《Java專欄》《Python專欄》 ??心若有所向往,何懼道阻且長 文章目錄 需求介紹現實問題需求分析測試案例構建BSP驅動構建業務實現 需求介紹 開發版中有4個燈,現在需要用4個燈顯示充電情況&a…

618大促有哪些好物是最值得入手的的?請收下這份618必買好物清單!

最近聊的最多的話題就是618,年中購物大狂歡馬上來了!!今天整理了一下之前購買的好物,發現相比之前的價格真的是太劃算了,趕緊分享出來給大家,趁著這個大促趕緊多存入手~ 推薦1、南卡Neo 2——不傷耳黑科技…

SPHINX的輸出文檔格式

SPHINX的輸出文檔格式 SPHINX的輸出文檔格式更多信息 SPHINX的輸出文檔格式 用rst編寫,然后用sphinx-build進行編譯,還是效果相當不錯地,只要掌握了格式,可以一次編譯,多種格式輸出,主要是用的可能是html和…

記一次netty客戶端的開發

背景 近日要開發一個tcp客戶端程序去對接上游廠商的數據源,決定使用netty去處理,由于很久沒有開發過netty了,順便學習記錄下 netty搭建 考慮到我們需要多個client去對接server服務,所以我們定義一個公共的AbstractNettyClient父…

機器學習:人工智能中實現自動化決策與精細優化的核心驅動力

機器學習在人工智能中確實扮演著實現自動化決策與精細優化的核心驅動力角色。以下是關于這一點的詳細分析: 一、機器學習在自動化決策中的應用 數據驅動:機器學習依賴于大量的數據來進行模型訓練和評估,從而確保決策的準確性。通過自動化數據分析和處理,機器學習能夠從海量…

LabVIEW與Arm控制器之間的通訊

LabVIEW是一個強大的圖形化編程環境,廣泛應用于自動化控制、數據采集和測試測量等領域。而Arm控制器則是嵌入式系統中常用的處理器架構,廣泛用于各種控制和計算任務。將LabVIEW與Arm控制器進行通訊控制,可以結合二者的優勢,實現高…

vue3 中可緩存的方法

場景:在列表中,有這么一個屬性,需要通過同行的其他屬性,進行復雜的計算,才能得出,如果我們用方法,然后傳參,得到這個屬性,那么每次更改列表后,每行都會重新計…

WordPress plugin MStore API SQL注入漏洞復現(CVE-2023-3077)

0x01 產品簡介 WordPress和WordPress plugin都是WordPress基金會的產品。WordPress是一套使用PHP語言開發的博客平臺。該平臺支持在PHP和MySQL的服務器上架設個人博客網站。WordPress plugin是一個應用插件。 0x02 漏洞概述 WordPress plugin MStore API 3.9.8 版本之前存在S…

Linux 深入講解自動化構建工具

各位大佬好 ,這里是阿川的博客 , 祝您變得更強 個人主頁:在線OJ的阿川 大佬的支持和鼓勵,將是我成長路上最大的動力 阿川水平有限,如有錯誤,歡迎大佬指正 Linux一系列的文章(質量分均在93分…

配置arduino和ESP8266

首先準備好arduino 的IDE和ESP8266的驅動以及板子 1.安裝驅動,雙擊x64的版本驅動,安裝好以后,在資源管理器檢查端口,比如下下圖出現的COM4就是esp8266所使用的端口 2.安裝好arduino最好不要在路徑中存在中文符號,打開…

水滴式粉碎機:多功能飼料粉碎設備

飼料粉碎機是一種專門用于將各種飼料原料進行粉碎處理的機械設備。無論是玉米、小麥等谷物,還是豆粕、魚粉等動物性原料,甚至是一些粗纖維含量較高的秸稈、牧草等,都可以經過飼料粉碎機的處理,變成適合畜禽消化吸收的精細飼料。這…

521源碼-游戲源碼-2024卡牌回合自走棋手游《夢間集》推出全新Linux手工服務端

首款稀有卡牌回合自走棋手游《夢間集》推出全新Linux手工服務端整理 更多網站源碼,游戲源碼,學習教程,請點擊👉-521源碼-👈獲取最新資源 本游戲下載地址:2024卡牌回合自走棋手游《夢間集》推出全新Linux手…