【Java每日一題】2.和數最大操作II-動態規劃

題目難度:中等

主要提升:for循環思想、動態規劃思想、數組操作

一、題目描述:

給你一個整數數組?nums?,如果?nums?至少包含?2?個元素,你可以執行以下操作中的任意一個
(1)選擇?nums?中最前面兩個元素并且刪除它們。
(2)選擇?nums?中最后兩個元素并且刪除它們。
(3)選擇?nums?中第一個和最后一個元素并且刪除它們。
一次操作的分數是被刪除元素的和。
在確保?所有操作分數相同?的前提下,請你求出最多能進行多少次操作。
請你返回按照上述要求?最多可以進行的操作次數。

二、示例:

示例 1:
輸入:nums = [3,2,1,2,3,4]
輸出:3
解釋:我們執行以下操作:
- 刪除前兩個元素,分數為 3 + 2 = 5 ,nums = [1,2,3,4] 。
- 刪除第一個元素和最后一個元素,分數為 1 + 4 = 5 ,nums = [2,3] 。
- 刪除第一個元素和最后一個元素,分數為 2 + 3 = 5 ,nums = [] 。
由于 nums 為空,我們無法繼續進行任何操作。
示例 2:
輸入:nums = [3,2,6,1,4]
輸出:2
解釋:我們執行以下操作:
- 刪除前兩個元素,分數為 3 + 2 = 5 ,nums = [6,1,4] 。
- 刪除最后兩個元素,分數為 1 + 4 = 5 ,nums = [6] 。
至多進行 2 次操作。

三、思路:

要使用動態規劃的思想,對于三種情況分別進行計算,返回最優解為最大次數。

四、代碼:

參考Leetcode:

class Solution {int[] nums;int[][] memo;public int maxOperations(int[] nums) {// 初始化變量int n = nums.length; // 獲取輸入數組的長度this.nums = nums; // 將輸入數組賦值給類的成員變量this.memo = new int[n][n]; // 創建一個二維數組用于記憶化搜索int res = 0; // 初始化結果變量為0// 嘗試三種不同的操作并取最大值res = Math.max(res, helper(0, n - 1, nums[0] + nums[n - 1]));res = Math.max(res, helper(0, n - 1, nums[0] + nums[1]));res = Math.max(res, helper(0, n - 1, nums[n - 2] + nums[n - 1]));return res; // 返回最終結果}public int helper(int i, int j, int target) {// 重置記憶化數組for (int k = 0; k < nums.length; k++) {Arrays.fill(memo[k], -1);}// 調用深度優先搜索函數return dfs(i, j, target);}public int dfs(int i, int j, int target) {// 遞歸終止條件if (i >= j) {return 0;}// 如果已經計算過這個子問題,直接返回記憶化的結果if (memo[i][j] != -1) {return memo[i][j];}// 初始化答案為0int ans = 0;// 檢查三種可能的操作if (nums[i] + nums[i + 1] == target) {ans = Math.max(ans, dfs(i + 2, j, target) + 1);}if (nums[j - 1] + nums[j] == target) {ans = Math.max(ans, dfs(i, j - 2, target) + 1);}if (nums[i] + nums[j] == target) {ans = Math.max(ans, dfs(i + 1, j - 1, target) + 1);}// 記憶化當前的結果memo[i][j] = ans;// 返回答案return ans;}
}

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

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

相關文章

Java學習-JDBC(一)

JDBC 概念 JDBC(Java Database Connectivity)Java數據庫連接JDBC提供了一組獨立于任何數據庫管理系統的APIJava提供接口規范&#xff0c;由各個數據庫廠商提供接口的實現&#xff0c;廠商提供的實現類封裝成jar文件&#xff0c;也就是我們俗稱的數據庫驅動jar包JDBC充分體現了…

什么是虛擬局域網?快解析有哪些的虛擬化應用功能?

什么是虛擬局域網&#xff1f;從字面上理解就是不是真實存在的局域網。虛擬局域網是將網絡用戶和設備集中在一起&#xff0c;從而可以對不同地域和商業的需要有一定的支持性。虛擬局域網有它的優點&#xff0c;在使用過程中可以為企業提供更安全、更穩定、更靈活的服務保障體系…

記錄jenkins pipeline ,git+maven+sonarqube+打包鏡像上傳到阿里云鏡像倉庫

1、階段視圖&#xff1a; 2、準備工作 所需工具與插件 jdk&#xff1a;可以存在多版本 maven&#xff1a;可以存在多版本 sonar-scanner 憑證令牌 gitlab&#xff1a;credentialsId sonarqube:配置在sonarqube208服務中 3、jenkinsfile pipeline {agent anystages {stage(從…

ugpowermill編程入門:從基礎到進階的全面解析

ugpowermill編程入門&#xff1a;從基礎到進階的全面解析 在制造行業中&#xff0c;UG PowerMill編程是一款廣泛應用的數控編程軟件&#xff0c;它以其高效、精確的加工能力深受工程師們的喜愛。對于初學者來說&#xff0c;如何快速入門并熟練掌握UG PowerMill編程技能是一項重…

Mac怎么讀取內存卡 Mac如何格式化內存卡

在今天的數字化時代&#xff0c;內存卡已經成為了我們生活中不可或缺的一部分。對于Mac電腦用戶而言&#xff0c;正確地讀取和管理內存卡中的數據至關重要。下面我們來看看Mac怎么讀取內存卡&#xff0c;Mac如何格式化內存卡的相關內容。 一、Mac怎么讀取內存卡 蘋果電腦在讀…

Base64 編碼表 參考

Base64的編碼是由下面的64個字符加上一個墊字符"" 一共65個字符集來完成的&#xff0c;他用 4 個 base64 字符去表示 3 個 ASCII 碼字符。 Base64字符串判斷可參考 golang判斷字符串是否base64編碼的字符串算法&#xff0c; 可準確判斷是或否 附帶單元測試用例和模糊…

Python中__面向對象__學習 (上)

目錄 一、類和對象 1.類的定義 2.根據對象創建類 二、構造和析構 1.構造方法 &#xff08;1&#xff09;不帶參數的構造方法 &#xff08;2&#xff09;帶參數的構造方法 2.析構方法 三、重載 1.定制對象的字符串形式 &#xff08;1&#xff09;只重載__str__方法 …

QT Udp廣播實現設備發現

測試環境 本文選用pc1作為客戶端&#xff0c;pc2&#xff0c;以及一臺虛擬機作為服務端。 pc1,pc2(客戶端&#xff09;: 虛擬機&#xff08;服務端)&#xff1a; 客戶端 原理&#xff1a;客戶端通過發送廣播消息信息到ip:255.255.255.255(QHostAddress::Broadcast),局域網…

了解Java內存模型(Java Memory Model, JMM)

了解Java內存模型&#xff08;Java Memory Model, JMM&#xff09; Java內存模型&#xff08;Java Memory Model, JMM&#xff09;是Java語言規范中規定的一組規則&#xff0c;定義了多線程程序中變量&#xff08;包括實例字段、靜態字段和數組元素&#xff09;的訪問方式。JM…

git 大文件上傳失敗 Please remove the file from history and try again.

根據提示執行命令 --- 查找到當前文件 git rev-list --objects --all | grep b24e74b34e7d482e2bc687e017c8ab28cd1d24b6git filter-branch --tree-filter rm -f 文件名 --tag-name-filter cat -- --all git push origin --tags --force git push origin --all --force

Fort Firewall防火墻工具v3.12.13

軟件介紹 Fort Firewall是一款開源系統的免費防火墻&#xff0c;體積小巧、占用空間不大&#xff0c;可以為用戶的電腦起到保護作用&#xff0c;該軟件可以控制程序訪問網絡&#xff0c;控制用戶的電腦網速&#xff0c;用戶可以更輕松便捷的進行網絡安全防護&#xff0c;保護系…

c# Attribute特性示范

[MyCustomAttribute("Example")] 中括號寫在類前&#xff0c;表示此類具有此特性。 ”property” 譯為“屬性 Attribute用特性描述 using System;// 定義一個自定義特性 public class MyCustomAttribute : Attribute {public string Value { get; set; }public My…

什么是鏡像源

鏡像源在計算機領域中是一個重要的概念&#xff0c;下面我將用分點的方式清晰解釋鏡像源的定義、作用以及特點&#xff1a; 1. 定義 鏡像源&#xff08;Mirror&#xff09;&#xff1a;是一個服務器&#xff0c;它存儲了另一個服務器上的某些或全部內容的副本。這些內容可以包…

Sony前端連接功放:深度解析與實用指南

Sony前端連接功放&#xff1a;深度解析與實用指南 在音響設備連接中&#xff0c;Sony前端與功放的連接常常是一個令人困惑卻又至關重要的環節。本文將從四個方面、五個方面、六個方面和七個方面詳細解析Sony前端連接功放的步驟、技巧及注意事項&#xff0c;旨在幫助讀者輕松完…

計算機網絡 —— 網絡層(IP數據報)

計算機網絡 —— 網絡層&#xff08;IP數據報&#xff09; 網絡層要滿足的功能IP數據報IP數據報格式IP數據報首部格式數據部分 IP數據報分片 我們今天進入網絡層的學習。 網絡層要滿足的功能 網絡層作為OSI模型中的第三層&#xff0c;是計算機網絡體系結構的關鍵組成部分&…

實驗六、IPv4 地址的子網劃分,第 2 部分《計算機網絡》

你有沒有發現&#xff0c;困的時候真的清醒不了。 目錄 一、實驗目的 二、實驗內容 三、實驗小結 一、實驗目的 完成本練習之后&#xff0c;您應該能夠確定給定 IP 地址和子網掩碼的子網信息。 知道 IP 地址、網絡掩碼和子網掩碼后&#xff0c;您應該能夠確定有關該 IP 地…

SpringBoot實現參數校驗攔截(采用AOP方式)

一、AOP是什么&#xff1f; 目的&#xff1a;分離橫切關注點&#xff08;如日志記錄、事務管理&#xff09;與核心業務邏輯。 優勢&#xff1a;提高代碼的可讀性和可維護性。 關鍵概念 切面&#xff08;Aspect&#xff09;&#xff1a;包含橫切關注點代碼的模塊。通知&#xff…

【2024最新華為OD-C/D卷試題匯總】[支持在線評測] 運輸時間(200分) - 三語言AC題解(Python/Java/Cpp)

?? 大家好這里是清隆學長 ,一枚熱愛算法的程序員 ? 本系列打算持續跟新華為OD-C/D卷的三語言AC題解 ?? ACM銀牌??| 多次AK大廠筆試 | 編程一對一輔導 ?? 感謝大家的訂閱? 和 喜歡?? ??在線評測鏈接 運輸時間(200分) ?? 評測功能需要訂閱專欄后私信聯系清隆解…

【面試干貨】索引的優缺點

【面試干貨】索引的優缺點 1、創建索引可以大大提高系統的性能&#xff08;**優點**&#xff09;2、增加索引也有許多不利的方面&#xff08;**缺點**&#xff09; &#x1f496;The Begin&#x1f496;點點關注&#xff0c;收藏不迷路&#x1f496; 1、創建索引可以大大提高系…

LiDAR360MLS 7.2.0 雷達點云數據處理軟件功能介紹

新增模塊和功能: 支持手持、背包數據的解算 SLAM解算成功率提升 SLAM解算效率提升 采集端與后處理端保持一致 賦色優化 新增平面圖模塊 新增平面圖全自動矢量化功能 新增平面圖矢量一鍵導出DXF功能 新增平面圖正射影像一鍵導出功能 支持交叉、垂直繪制 支…