LeetCode 解題思路 44(Hot 100)

在這里插入圖片描述

解題思路:

  1. dp 數組的含義: 以 nums[i] 為結尾的最長遞增子序列的長度。
  2. 遞推公式: dp[i] = Math.max(dp[i], dp[j] + 1)。
  3. dp 數組初始化: dp[i] = 1。
  4. 遍歷順序: 從小到大去遍歷,從 i = 1 開始,直到 i = nums.length - 1。
  5. 打印 dp 數組

Java代碼:

class Solution {public int lengthOfLIS(int[] nums) {int[] dp = new int[nums.length];Arrays.fill(dp, 1);int result = 0;for (int i = 0; i < nums.length; i++) {for (int j = 0; j < i; j++) {if (nums[i] > nums[j]) {dp[i] = Math.max(dp[i], dp[j] + 1);}}result = Math.max(result, dp[i]);}return result;}
}

復雜度分析:

  • 時間復雜度: O( n 2 n^2 n2)。
  • 空間復雜度: O(1)。
    在這里插入圖片描述

解題思路:

  1. 初始化變量??:
  • maxProduct:記錄全局的最大乘積,初始值為數組的第一個元素。
  • minProduct:記錄當前的最小乘積,初始值為數組的第一個元素。
  • result:記錄最終的結果,初始值為數組的第一個元素。
  1. 遍歷數組??: 對于每個元素 nums[i],我們需要考慮兩種情況:
  • 如果 nums[i] 是正數,那么當前的最大乘積可能是 maxProduct ? * ? nums[i] 或 nums[i] 本身,而最小乘積可能是 minProduct ? * ? nums[i] 或 nums[i] 本身。
  • 如果 nums[i] 是負數,那么當前的最大乘積可能是 minProduct ? * ? nums[i] 或 nums[i] 本身,而最小乘積可能是 maxProduct ? * ? nums[i] 或 nums[i] 本身。
  • 為了統一處理這兩種情況,我們可以先計算 nums[i]、maxProduct ? * ? nums[i] 和 minProduct ? * ? nums[i] 的值,然后取其中的最大值和最小值分別作為新的 maxProduct 和 minProduct。
  1. 更新結果??: 在每次迭代中,更新 result 為 maxProduct 和 result 中的較大值。

  2. 返回結果??: 遍歷結束后,返回 result。

Java代碼:

public class Solution {public int maxProduct(int[] nums) {int maxProduct = nums[0];int minProduct = nums[0];int result = nums[0];for (int i = 1; i < nums.length; i++) {int tempMax = Math.max(nums[i], Math.max(maxProduct * nums[i], minProduct * nums[i]));minProduct = Math.min(nums[i], Math.min(maxProduct * nums[i], minProduct * nums[i]));maxProduct = tempMax;result = Math.max(result, maxProduct);}return result;}
}

復雜度分析:

  • 時間復雜度: O(n)。
  • 空間復雜度: O(1)。

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

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

相關文章

精益數據分析(22/126):解鎖創業增長密碼與長漏斗分析

精益數據分析&#xff08;22/126&#xff09;&#xff1a;解鎖創業增長密碼與長漏斗分析 在創業與數據分析的探索旅程中&#xff0c;我們都在不斷尋求新的知識和方法&#xff0c;以提升創業的成功率。我一直期望能和大家共同學習、共同進步&#xff0c;今天就讓我們繼續深入研…

大模型應用開發之LLM入門

一、大模型概述 1、大模型概念 LLM是指用有大量參數的大型預訓練語言模型&#xff0c;在解決各種自然語言處理任務方面表現出強大的能力&#xff0c;甚至可以展現出一些小規模語言模型所不具備的特殊能力 2、語言模型language model 語言建模旨在對詞序列的生成概率進行建模…

Vue 計算屬性 VS 偵聽器:從原理到性能的深度對比

在 Vue 開發中&#xff0c;computed&#xff08;計算屬性&#xff09;和watch&#xff08;偵聽器&#xff09;是響應式系統的兩大核心工具。 它們看似都能處理數據變化&#xff0c;實則設計理念和應用場景大相徑庭。 一、核心區別&#xff1a;數據驅動的兩種范式 1. 觸發機制…

特斯拉宣布啟動自動駕駛網約車測試,無人出租車服務進入最后準備階段

特斯拉公司于4月24日正式宣布&#xff0c;已在美國得克薩斯州奧斯汀和加利福尼亞州舊金山灣區啟動自動駕駛網約車服務的員工內部測試。這項測試將為今年夏季計劃推出的完全無人駕駛出租車服務進行最后的驗證和準備。 此次測試使用約200輛經過特殊改裝的Model 3車型&#xff0c;…

基于springboot的在線教育系統

一、系統架構 前端&#xff1a;vue | element-ui | html | jquery | css | ajax 后端&#xff1a;springboot | mybatis 環境&#xff1a;jdk1.8 | mysql | maven | nodejs | idea 二、代碼及數據 三、功能介紹 01. web端-首頁1 02. web端-首頁2 03. w…

文檔編輯:reStructuredText全面使用指南 — 第四部分 高級主題

文檔編輯&#xff1a;reStructuredText全面使用指南 — 第四部分 高級主題 reStructuredText&#xff08;簡稱RST或ReST&#xff09;是一種輕量級的標記語言&#xff0c;用于編寫結構化的文檔。它由Python社區開發&#xff0c;并廣泛應用于技術文檔、書籍、博客文章等。reStruc…

git Http改用戶下載

用原先別人賬號,無權下更新 http方式設置自己賬號 例如 git fetch --all 提示沒有權限從 http://192.168.1.2/gitlab/項目路徑.git下載 git remote set-url origin http://your-username192.168.1.2/gitlab/項目路徑.git your-username修改成自己的git賬號 需要輸入一個Tok…

Cancer Cell|scRNA-seq + scTCR + 空間多組學整合分析,揭示CD8? T細胞在免疫治療中的“雙路徑” | 臨床問題的組學解答

Cancer Cell&#xff5c;scRNA-seq scTCR 空間多組學整合分析&#xff0c;揭示CD8? T細胞在免疫治療中的“雙路徑” &#x1f44b; 歡迎關注我的生信學習專欄~ 如果覺得文章有幫助&#xff0c;別忘了點贊、關注、評論&#xff0c;一起學習 近日&#xff0c;《Cancer Cell》…

Python編程的真諦:超越語法,理解編程本質

你是否也曾陷入這樣的誤區&#xff1a;學了無數的 Python 語法、刷了幾十套題&#xff0c;寫起代碼卻仍然卡頓、舉步維艱&#xff1f;這時候你才發現&#xff0c;真正阻礙進步的&#xff0c;從不是語法&#xff0c;而是你對“編程本質”的理解。 如果你只是死記硬背Python的語…

Go協程的調用與原理

Goroutine Go不需要像C或者Java那樣手動管理線程&#xff0c;Go語言的goroutine機制自動幫你管理線程。 使用goroutine、 Go語言中使用goroutine非常簡單&#xff0c;只需要在調用函數的時候在前面加上go關鍵字&#xff0c;就可以為一個函數創建一個goroutine。 一個gorout…

自然語言處理(9)—— 共現詞矩陣及Python實現

共現詞矩陣 1. 概述2. 構建步驟3. 代碼實現&#xff08;Python&#xff09;結語 共現詞矩陣&#xff08;Co-occurrence Matrix&#xff09;是自然語言處理&#xff08;NLP&#xff09;中用于捕捉詞語間語義關系的重要工具。共現矩陣通過統計詞語在特定上下文窗口內的共現頻率&a…

Spark SQL核心解析:大數據時代的結構化處理利器

在大數據處理領域&#xff0c;Spark以其強大的分布式計算能力脫穎而出&#xff0c;而Spark SQL作為Spark生態系統的重要組成部分&#xff0c;為結構化和半結構化數據處理提供了高效便捷的解決方案。它不僅整合了傳統SQL的強大查詢功能&#xff0c;還深度集成到Spark的計算框架中…

多態以及多態底層的實現原理

本章目標 1.多態的概念 2.多態的定義實現 3.虛函數 4.多態的原理 1.多態的概念 多態作為面對三大特性之一,它所指代的和它的名字一樣,多種形態.但是這個多種形態更多的指代是函數的多種形態. 多態分為靜態多態和動態多態. 靜態多態在前面已經學習過了,就是函數重載以及模板,…

linux下開發NFC讀寫器

linux下使用NFC讀卡器&#xff0c;基于QT5開發 創建工程&#xff0c;引入lib開始編寫代碼 創建工程&#xff0c;引入lib 創建一個QT工程&#xff0c;如果是控制臺程序&#xff0c;則去掉gui QT - gui引入lib庫 LIBS -L$$PWD/lib -lyw60x這里需要將libyw60x.so庫文件放在工程…

Linux基礎使用-筆記

1. 文件和目錄操作 查看當前目錄&#xff1a;pwd 命令用于顯示當前工作目錄的完整路徑。 pwd切換目錄&#xff1a;cd 命令用于切換工作目錄。 # 切換到指定目錄 cd /home/user/Documents # 切換到上一級目錄 cd .. # 切換到用戶主目錄 cd ~列出目錄內容&#xff1a;ls 命令用…

DAG(有向無環圖)計算模型面試內容整理-拓撲排序(Topological Sort)和節點依賴與并行度

拓撲排序(Topological Sort) 拓撲排序(Topological Sort): 拓撲排序是針對有向無環圖(DAG)的一種線性排序方法。這種排序方法的特點是,對于DAG中的每一條有向邊 (A → B),在拓撲排序中節點A總是排在節點B之前。

23種設計模式-結構型模式之享元模式(Java版本)

Java 享元模式&#xff08;Flyweight Pattern&#xff09;詳解 &#x1f98b; 什么是享元模式&#xff1f; 享元模式是一種結構型模式&#xff0c;它通過共享相同的對象來減少內存消耗&#xff0c;適用于大量細粒度對象的場景。關鍵思想是緩存重復出現的對象&#xff0c;避免…

瀏覽器訪問背后的秘密:從加載到關閉,數據是否會丟失?

? 一次瀏覽器訪問 www.xxx.com 背后發生了什么&#xff1f; —— 以及“我點了 &#xff0c;數據會不會丟&#xff1f;”的深度剖析 適讀人群&#xff1a;Web 開發者、運維工程師、性能調優/安全從業者 1?? 打開瀏覽器敲下網址&#xff1a;鏈路是如何啟動的&#xff1f; 階…

【HDFS入門】深入解析DistCp:Hadoop分布式拷貝工具的原理與實踐

目錄 1 DistCp概述與應用場景 2 DistCp架構設計解析 2.1 系統架構圖 2.2 執行流程圖 3 DistCp核心技術原理 3.1 并行拷貝機制 3.2 斷點續傳實現原理 4 DistCp實戰指南 4.1 常用命令示例 4.2 性能優化策略 5 異常處理與監控 5.1 常見錯誤處理流程 5.2 監控指標建議…

hbuilderx云打包生成的ipa文件如何上架

使用hbuilderx打包&#xff0c;會遇到一個問題。開發的ios應用&#xff0c;需要上架到app store&#xff0c;因此&#xff0c;就需要APP store的簽名證書&#xff0c;并且還需要一個像xcode那樣的工具來上架app store。 我們這篇文章說明下&#xff0c;如何在windows電腦&…