LeetCode算法題(Go語言實現)_60

題目

給你一個整數數組 cost ,其中 cost[i] 是從樓梯第 i 個臺階向上爬需要支付的費用。一旦你支付此費用,即可選擇向上爬一個或者兩個臺階。
你可以選擇從下標為 0 或下標為 1 的臺階開始爬樓梯。
請你計算并返回達到樓梯頂部的最低花費。

一、代碼實現(動態規劃優化)

func minCostClimbingStairs(cost []int) int {n := len(cost)if n == 0 {return 0}if n == 1 {return cost[0]}prevPrev, prev := cost[0], cost[1]for i := 2; i < n; i++ {current := cost[i] + min(prev, prevPrev)prevPrev, prev = prev, current}return min(prev, prevPrev)
}func min(a, b int) int {if a < b {return a}return b
}

二、算法分析

1. 核心思路
  • 滾動數組優化:僅維護前兩個狀態值
  • 狀態轉移方程:dp[i] = cost[i] + min(dp[i-1], dp[i-2])
  • 邊界處理
    • 直接處理n=0和n=1的特殊情況
    • 通過滾動變量避免O(n)空間復雜度
2. 關鍵步驟
  1. 初始化狀態:prevPrev=cost[0], prev=cost[1]
  2. 迭代計算
    • 計算當前臺階的最小花費
    • 更新前兩個狀態值
  3. 結果返回:取最后兩個狀態的最小值
3. 復雜度
指標說明
時間復雜度O(n)線性遍歷整個數組
空間復雜度O(1)僅使用三個臨時變量

三、圖解示例

在這里插入圖片描述

四、邊界條件與擴展

1. 特殊場景驗證
  • 空數組:返回0(題目約束通常不存在)
  • 單臺階數組:直接返回cost[0]
  • 兩臺階數組:取cost[0]和cost[1]較小值
  • 大數測試:n=1000時仍能高效計算
2. 擴展應用
  • 建筑成本優化:規劃多層建筑的最優建造路徑
  • 游戲AI尋路:動態計算移動消耗最小的路徑
  • 投資決策:多階段投資的最小成本路徑選擇
3. 多語言實現
class Solution {public int minCostClimbingStairs(int[] cost) {int n = cost.length;if (n == 1) return cost[0];int a = cost[0], b = cost[1];for (int i = 2; i < n; i++) {int c = cost[i] + Math.min(a, b);a = b;b = c;}return Math.min(a, b);}
}
class Solution:def minCostClimbingStairs(self, cost: List[int]) -> int:if len(cost) == 1:return cost[0]prev_prev, prev = cost[0], cost[1]for i in range(2, len(cost)):current = cost[i] + min(prev_prev, prev)prev_prev, prev = prev, currentreturn min(prev_prev, prev)

五、總結與優化

1. 算法對比
方法優勢適用場景
動態規劃最優時間復雜度常規需求
遞歸+記憶化代碼直觀教學演示
矩陣快速冪O(log n)時間復雜度極大n值計算
2. 工程優化
  • 循環展開:手動展開循環減少分支判斷
  • SIMD指令:利用并行計算加速向量運算
  • 預計算緩存:存儲常用值減少重復計算
3. 擴展方向
  • 三維路徑規劃:考慮空間中的多層移動成本
  • 隨機成本模型:處理概率性變化的動態成本
  • 多目標優化:平衡時間和成本的雙重約束

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

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

相關文章

馬架構的Netty、MQTT、CoAP面試之旅

標題&#xff1a;馬架構的Netty、MQTT、CoAP面試之旅 在互聯網大廠的Java求職者面試中&#xff0c;一位名叫馬架構的資深Java架構師正接受著嚴格的考驗。他擁有十年的Java研發經驗和架構設計經驗&#xff0c;尤其對疑難問題和線索問題等有著豐富的經歷。 第一輪提問&#xff…

焦化燒結行業無功補償解決方案—精準分組補償 穩定電能質量沃倫森

在焦化、燒結等冶金行業&#xff0c;負荷運行呈現長時階梯狀變化&#xff0c;功率波動相對平緩&#xff0c;但對無功補償的分組精度要求較高。傳統固定電容器組補償方式無法動態跟隨負荷變化&#xff0c;導致功率因數不穩定&#xff0c;甚至可能因諧波放大影響電網安全。 行業…

使用String path = FileUtilTest.class.getResource(“/1.txt“).getPath(); 報找不到路徑

在windows環境運行&#xff0c;下面的springboot中path怎么找不到文件呢&#xff1f; path輸出后的結果是&#xff1a;路徑是多少&#xff1a;/D:/bjpowernode/msb/%e4%b9%90%e4%b9%8b%e8%80%85/apache%20commons/SpringBootBase6/target/test-classes/1.txt 怎么解決一下呢&am…

【C++】二叉樹進階面試題

根據二叉樹創建字符串 重點是要注意括號省略問題&#xff0c;分為以下情況&#xff1a; 1.左字樹為空&#xff0c;右子樹不為空&#xff0c;左邊括號保留 2.左右子樹都為空&#xff0c;括號都不保留 3。左子樹不為空&#xff0c;右子樹為空&#xff0c;右邊括號不保留 如果根節…

RSUniVLM論文精讀

一些收獲&#xff1a; 1. 發現這篇文章的table1中&#xff0c;有CDChat ChangeChat Change-Agent等模型&#xff0c;也許用得上。等會看看有沒有源代碼。 摘要&#xff1a;RSVLMs在遙感圖像理解任務中取得了很大的進展。盡管在多模態推理和多輪對話中表現良好&#xff0c;現有模…

低空AI系統的合規化與標準化演進路徑

隨著AI無人機集群逐步參與城市空域治理、物流服務與公共安全作業&#xff0c;其系統行為不再是“技術封閉域”&#xff0c;而需接受法規監管、責任評估與接口協同的多方審查。如何將AI集群系統推向標準化、可接入、可審計的合規體系&#xff0c;成為未來空中交通演進的關鍵。本…

【金倉數據庫征文】從云計算到區塊鏈:金倉數據庫的顛覆性創新之路

目錄 一、引言 二、金倉數據庫概述 2.1 金倉數據庫的背景 2.2 核心技術特點 2.3 行業應用案例 三、金倉數據庫的產品優化提案 3.1 性能優化 3.1.1 查詢優化 3.1.2 索引優化 3.1.3 緩存優化 3.2 可擴展性優化 3.2.1 水平擴展與分區設計 3.2.2 負載均衡與讀寫分離 …

致遠oa部署

文章目錄 環境搭建項目構建 僅供學習使用 環境搭建 準備項目&#xff1a; https://pan.quark.cn/s/04a166575e94 https://pan.xunlei.com/s/VOOc1c9dBdLIuU8KKiqDa68NA1?pwdmybd# 官方文檔: https://open.seeyoncloud.com/v5devCTP/ 安裝時 mysql 數據庫可能出現字符集設置…

移遠通信智能模組助力東成“無邊界智能割草機器人“閃耀歐美市場

2025年4月21日&#xff0c;移遠通信宣布&#xff0c;旗下SC206E-EM智能模組已成功應用于江蘇東成電動工具有限公司旗下的DCK TERRAINA無邊界智能割草機器人。 這款智能模組高度集成計算、通信、定位等多元能力&#xff0c;以小型化、低功耗、實時性強和低成本等綜合優勢&#…

100.HTB-Meow

學習成果 在第一層&#xff0c;您將獲得網絡安全滲透測試領域的基本技能。您將首先學習如何匿名連接到各種服務&#xff0c;例如 FTP、SMB、Telnet、Rsync 和 RDP。接下來&#xff0c;您將發現 Nmap 的強大功能&#xff0c;Nmap 是一個有價值的工具&#xff0c;用于識別目標系統…

大廠面試-redis

前言 本章內容來自B站黑馬程序員java大廠面試題和小林coding 博主學習筆記&#xff0c;如果有不對的地方&#xff0c;海涵。 如果這篇文章對你有幫助&#xff0c;可以點點關注&#xff0c;點點贊&#xff0c;謝謝你&#xff01; 1.redis的使用場景 1.1 緩存 緩存穿透 在布…

【含文檔+PPT+源碼】基于SpringBoot+vue的疫苗接種系統的設計與實現

項目介紹 本課程演示的是一款 基于SpringBootvue的疫苗接種系統的設計與實現&#xff0c;主要針對計算機相關專業的正在做畢設的學生與需要項目實戰練習的 Java 學習者。 1.包含&#xff1a;項目源碼、項目文檔、數據庫腳本、軟件工具等所有資料 2.帶你從零開始部署運行本套系…

【Pandas】pandas DataFrame dot

Pandas2.2 DataFrame Binary operator functions 方法描述DataFrame.add(other)用于執行 DataFrame 與另一個對象&#xff08;如 DataFrame、Series 或標量&#xff09;的逐元素加法操作DataFrame.add(other[, axis, level, fill_value])用于執行 DataFrame 與另一個對象&…

Windows上Tomcat 11手動啟動startup.bat關閉shutdown.bat

發現tomcat11無法手動雙擊startup.bat和shutdown.bat進行開啟和關閉。雙擊startup.bat命令窗口一閃而過就是啟動失敗了&#xff0c;正常啟動成功是cmd命令窗口有全副的執行輸出且不關閉窗口。 解決方法如下&#xff1a;主要更改一個tomcat安裝目錄下的/conf/server.xml配置 1.…

7.9 Python+Click實戰:5步打造高效的GitHub監控CLI工具

Python+Click實戰:5步打造高效的GitHub監控CLI工具 GitHub Sentinel Agent 命令行界面開發實戰 關鍵詞:CLI 開發實踐、Click 框架、API 集成、命令行參數解析、錯誤處理機制 1. 命令行界面技術選型與架構設計 GitHub Sentinel 采用 Click + Requests 技術棧構建 CLI 工具,…

安全框架概述

Java中的安全框架通常是指解決Web應用安全問題的框架&#xff0c;如果開發Web應用時沒有使用安全框架&#xff0c;開發者需要自行編寫代碼增加Web應用安全性。自行實現Web應用的安全性并不容易&#xff0c;需要考慮不同的認證和授權機制、網絡關鍵數據傳輸加密等多方面的問題&a…

配置 C/C++ 語言智能感知(IntelliSense)的 c_cpp_properties.json 文件內容

配置 C/C 語言智能感知&#xff08;IntelliSense&#xff09;的 c_cpp_properties.json 文件內容 {"configurations": [{"name": "Linux","includePath": ["${workspaceFolder}/**","/opt/ros/humble/include/**&quo…

【安全掃描器原理】網絡掃描算法

【安全掃描器原理】網絡掃描算法 1.非順序掃描2.高速掃描 & 分布式掃描3.服務掃描 & 指紋掃描 1.非順序掃描 參考已有的掃描器&#xff0c;會發現幾乎所有的掃描器都無一例外地使用增序掃描&#xff0c;即對所掃描的端口自小到大依次掃描&#xff0c;殊不知&#xff0…

理解歐拉公式

1. 歐拉公式中的符號 歐拉公式 e i x cos ? x i sin ? x e^{ix}\cos xi\sin x eixcosxisinx當 x π x \pi xπ時 e i π 1 0 / / 歐拉恒等式 e^{i\:\pi}10 //歐拉恒等式 eiπ10//歐拉恒等式 e e e:自然對數的底 i i i:虛數&#xff0c; i 2 ? 1 i^2 -1 i2?1 cos…

HTML郵件背景圖兼容 Outlook

在 HTML 郵件中設置背景圖片時&#xff0c;Outlook&#xff08;尤其是桌面版的 Outlook for Windows&#xff09;經常不會正確顯示背景圖&#xff0c;這是因為outlook 是使用 Word 作為郵件渲染引擎&#xff0c;而不是標準的 HTML/CSS 渲染方式。 推薦的解決方案&#xff1a;使…