leetcode 740. 刪除并獲得點數(dp)

給你一個整數數組 nums ,你可以對它進行一些操作。

每次操作中,選擇任意一個 nums[i] ,刪除它并獲得 nums[i] 的點數。之后,你必須刪除每個等于 nums[i] - 1 或 nums[i] + 1 的元素。

開始你擁有 0 個點數。返回你能通過這些操作獲得的最大點數。

示例 1:

輸入:nums = [3,4,2]
輸出:6
解釋:
刪除 4 獲得 4 個點數,因此 3 也被刪除。
之后,刪除 2 獲得 2 個點數。總共獲得 6 個點數。

解題思路

代碼分為兩個部分

  1. 統計每個元素出現的次數(方便計算刪除元素后的得分),并且找出最大值(為了縮小dp數組的長度)
	for _, num := range nums {cnt[num]++if num>max{max=num}}
  1. 狀態轉移
    dp[i][0]代表當前元素是i,并且不刪除該元素。因此前一個元素可以是被刪除元素,也可以不是
    dp[i][1]代表當前元素是i,需要刪除該元素。因此前一個元素必須不為刪除元素(因為如果前一個元素是刪除元素,該元素已經被刪除掉了),并且加上刪除后的得分
	for i := 1; i <= max; i++ {dp[i][0]=MaxV(dp[i-1][0],dp[i-1][1])dp[i][1]=dp[i-1][0]+i*cnt[i]}

代碼

func MaxV (a int,b int) int {if a>b{return a}else {return b}
}func deleteAndEarn(nums []int) int {cnt:=make([]int,10008)max:=-1for _, num := range nums {cnt[num]++if num>max{max=num}}dp:=make([][2] int,max+1)for i := 1; i <= max; i++ {dp[i][0]=MaxV(dp[i-1][0],dp[i-1][1])dp[i][1]=dp[i-1][0]+i*cnt[i]}return MaxV(dp[max][0],dp[max][1])
}

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

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

相關文章

WebSocket入門

WebSocket前言  WebSocket是HTML5的重要特性&#xff0c;它實現了基于瀏覽器的遠程socket&#xff0c;它使瀏覽器和服務器可以進行全雙工通信&#xff0c;許多瀏覽器&#xff08;Firefox、Google Chrome和Safari&#xff09;都已對此做了支持。 在WebSocket出現之前&#xff…

安卓游戲開發推箱子_保持冷靜并砍箱子-開發

安卓游戲開發推箱子Hack The Box (HTB) is an online platform allowing you to test your penetration testing skills. It contains several challenges that are constantly updated. Some of them simulating real world scenarios and some of them leaning more towards …

自定義TabLayout

本文為kotlin仿開眼視頻Android客戶端的后續補充內容&#xff0c;本篇為大家介紹如何對TabLayout進行定制使用&#xff0c;基于項目需求&#xff0c;本篇主要對部分功能進行了定制&#xff0c;如&#xff1a;指示器距離文字的距離、文字選中加粗、文字選中變大等 本文部分代碼參…

ml dl el學習_DeepChem —在生命科學和化學信息學中使用ML和DL的框架

ml dl el學習Application of Machine Learning and Deep Learning for Drug Discovery, Genomics, Microsocopy and Quantum Chemistry can create radical impact and holds the potential to significantly accelerate the process of medical research and vaccine developm…

響應式網站設計_通過這個免費的四小時課程,掌握響應式網站設計

響應式網站設計This video tutorial from Kevin Powell teaches you to build responsive websites from scratch. 凱文鮑威爾(Kevin Powell)的這段視頻教程教您從頭開始構建響應式網站。 The course starts with explaining the core concepts needed to start thinking resp…

2017-2018-1 20179215《Linux內核原理與分析》第二周作業

20179215《Linux內核原理與分析》第二周作業 這一周主要了解了計算機是如何工作的&#xff0c;包括現在存儲程序計算機的工作模型、X86匯編指令包括幾種內存地址的尋址方式和push、pop、call、re等幾個重要的匯編指令。主要分為兩部分進行這周的學習總結。第一部分對學習內容進…

python:單例模式--使用__new__(cls)實現

單例模式&#xff1a;即一個類有且僅有一個實例。 那么通過python怎么實現一個類只能有一個實例呢。 class Earth:"""假如你是神&#xff0c;你可以創造地球"""print 歡迎來到地球# 生成一個地球 a Earth() print id(a)# 再生成一個地球 b Ear…

重學TCP協議(5) 自連接

1.自連接是什么 在發起連接時&#xff0c;TCP/IP的協議棧會先選擇source IP和source port&#xff0c;在沒有顯示調用bind()的情況下&#xff0c;source IP由路由表確定&#xff0c;source port由TCP/IP協議棧從local port range中選取尚未使用的port。 如果destination IP正…

Gradle復制文件/目錄方法

2019獨角獸企業重金招聘Python工程師標準>>> gradle復制文件/文件夾方法 復制文件 //復制IDE生成的classes.jar文件到build/libs中&#xff0c;并改名為FileUtils.jar. task copyFile(type:Copy) {delete build/libs/FileUtils.jarfrom(build/intermediates/bundles…

用戶參與度與活躍度的區別_用戶參與度突然下降

用戶參與度與活躍度的區別disclaimer: I don’t work for Yammer, this is a public data case study, I’ve written it in a narrative format to make this case study more engaging to read.免責聲明&#xff1a;我不為Yammer工作&#xff0c;這是一個公共數據案例研究&am…

python:__new__()與__init__()

參考&#xff1a;https://blog.csdn.net/qq_41020281/article/details/79638370 轉載于:https://www.cnblogs.com/gcgc/p/11585599.html

重學TCP協議(6) 四次揮手

1. 四次揮手 客戶端進程發出連接釋放報文&#xff0c;并且停止發送數據。釋放數據報文首部&#xff0c;FIN1&#xff0c;其序列號為sequ&#xff08;等于前面已經傳送過來的數據的最后一個字節的序號加1&#xff09;&#xff0c;此時&#xff0c;客戶端進入FIN-WAIT-1&#xff…

mysql數據庫部分操作指令

用cmd開啟服務時拒絕訪問. 原因:不是管理員用戶&#xff0c;沒有權限 將服務中的 MySQL設置為手動啟動&#xff0c; 否則 開機自動啟動. 啟動mysql服務&#xff0c;用管理員權限打開dos界面 windowsX A 打開開始界面 點擊管理員開啟cmd 啟動服務&#xff1a;net start …

推箱子2-向右推!_保持冷靜并砍箱子-嗶

推箱子2-向右推!Hack The Box (HTB) is an online platform allowing you to test your penetration testing skills. It contains several challenges that are constantly updated. Some of them simulating real world scenarios and some of them leaning more towards a C…

UML建模圖實戰筆記

一、前言 UML&#xff1a;Unified Modeling Language&#xff08;統一建模語言&#xff09;&#xff0c;使用UML進行建模的作用有哪些&#xff1a; 可以更好的理解問題可以及早的發現錯誤或者被遺漏的點可以更加方便的進行組員之間的溝通支持面向對象軟件開發建模&#xff0c;可…

數據草擬:使您的團隊熱愛數據的研討會

Learn the rules to Data Draw Up; a fun way to get your teams invested in data.了解數據收集的規則&#xff1b; 一種讓您的團隊投入數據的有趣方式。 Let’s keep things short. Metrics are one of the most important things in Product Management. They help us to u…

python:列表推導式

python中有種獨特的語法&#xff1a;推導式&#xff0c;可以將代碼壓縮到1行&#xff0c;但是不使用也不影響。 有三種&#xff1a;列表、字典、集合&#xff08;注意沒有元組推導式&#xff09; 列表推導式 # 1、一行代碼實現1—100之和(知識點&#xff1a;列表推導式) print(…

WPF中刪除打開過的圖片

WPF中刪除打開過的圖片 原文:WPF中刪除打開過的圖片在WPF中&#xff0c;當我們刪除打開過的圖片時&#xff0c;往往會遇到"...無法刪除&#xff0c;文件正在被另一個進程使用"的異常。即使當前文件是打開后關閉過的也不行。 這個問題的原因很簡單&#xff0c;是因為W…

深入理解InnoDB(5)-文件系統

1. 數據庫和文件系統的關系 像 InnoDB 、 MyISAM 這樣的存儲引擎都是把表存儲在文件系統上的。當我們想讀取數據的時候&#xff0c;這些存儲引擎會從文件系統中把數據讀出來返回給我們&#xff0c;當我們想寫入數據的時候&#xff0c;這些存儲引擎會把這些數據又寫回文件系統。…

vim捐贈_#PayItBackwards-一位freeCodeCamp畢業生如何向事業捐贈10,000美元

vim捐贈On Monday my phone suddenly started buzzing. Shawn Wang, AKA Swyx, had just tweeted about a donation hed made to freeCodeCamp.org.星期一&#xff0c;我的電話突然開始嗡嗡作響。 Awn Swyx的Shawn Wang剛剛在推特上發布了他對freeCodeCamp.org的捐款。 I glan…