代碼隨想錄算法訓練營第三十七天

LeetCode題目:

  • 300. 最長遞增子序列
  • 674. 最長連續遞增序列
  • 718. 最長重復子數組
  • 2918. 數組的最小相等和(每日一題)

其他:

今日總結
往期打卡


300. 最長遞增子序列

跳轉: 300. 最長遞增子序列

學習: 代碼隨想錄公開講解

問題:

給你一個整數數組 nums ,找到其中最長嚴格遞增子序列的長度。

子序列 是由數組派生而來的序列,刪除(或不刪除)數組中的元素而不改變其余元素的順序。例如,[3,6,2,7] 是數組 [0,3,1,6,2,2,7] 的子序列。

思路:

dp[i]代表長度為n的串中末尾值,如果下一個數大于當前最大長度情況下的末尾值,就說明可以再加一個數.不然就看看是否更新其他位置,更新的原則是盡量讓每個位置的值都更小.

要保證這個"插入位置"是比最后一個末尾比當前小的位置的下一個.
查詢位置的過程可以使用二分查找降低復雜度到logn

復雜度:

  • 時間復雜度: O ( n l o g n ) O(nlogn) O(nlogn)
  • 空間復雜度: O ( n ) O(n) O(n)

代碼:

class Solution {public int lengthOfLIS(int[] nums) {int[] dp = new int[nums.length];int count = 0;for(int i:nums){int left = -1,right = count;while(left+1<right){int mid = (left+right)/2; if(dp[mid]>=i){right = mid;}else left = mid;}dp[right] = i;if(right==count) count++;}return count;}
}

674. 最長連續遞增序列

跳轉: 674. 最長連續遞增序列

學習: 代碼隨想錄公開講解

問題:

給定一個未經排序的整數數組,找到最長且 連續遞增的子序列,并返回該序列的長度。

連續遞增的子序列 可以由兩個下標 lrl < r)確定,如果對于每個 l <= i < r,都有 nums[i] < nums[i + 1] ,那么子序列 [nums[l], nums[l + 1], ..., nums[r - 1], nums[r]] 就是連續遞增子序列。

思路:

如果遞增就+1,不然就歸零,統計歷史最大值.
因為還要加上當前值,所以每次歸零初始化為1.
可以看成條件遞推,如果遞增dp[i] = dp[i-1]+1;

復雜度:

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

代碼:

class Solution {public int findLengthOfLCIS(int[] nums) {int ans = 1;int num = 1;for (int i = 1; i < nums.length; i++) {if (nums[i] > nums[i - 1])num++;else {if (num > ans)ans = num;num = 1;}}return Math.max(ans, num);}
}

718. 最長重復子數組

跳轉: 718. 最長重復子數組

學習: 代碼隨想錄公開講解

問題:

給兩個整數數組 nums1nums2 ,返回 兩個數組中 公共的 、長度最長的子數組的長度

思路:

順序遍歷一個數組,逆序找結尾看看能否匹配上次匹配到的部分
(為了防止基于當前更新過的匹配,所以需要逆序,因為是子數組,要保證連續,所以到位置不匹配及時覆蓋為0)
動態規劃就是

if (nums1[i - 1] == nums2[j - 1]) {dp[i][j] = dp[i - 1][j - 1] + 1;
}

復雜度:

  • 時間復雜度: O ( n m ) O(nm) O(nm)
  • 空間復雜度: O ( n ) O(n) O(n)

代碼:

class Solution {public int findLength(int[] nums1, int[] nums2) {int ans = 0;int m = nums1.length;int n = nums2.length;int[] fn = new int[n+1];for (int i = 0; i < m; i++)for (int j = n - 1; j >= 0; j--) {fn[j + 1] = nums1[i] == nums2[j] ? fn[j] + 1 : 0;ans = Math.max(ans, fn[j + 1]);}return ans;}
}

2918. 數組的最小相等和(每日一題)

跳轉: 2918. 數組的最小相等和

問題:

給你兩個由正整數和 0 組成的數組 nums1nums2

你必須將兩個數組中的 所有 0 替換為 嚴格 正整數,并且滿足兩個數組中所有元素的和 相等

返回 最小 相等和 ,如果無法使兩數組相等,則返回 -1

思路:

0可以變成任意值,只要都有0就一定能一樣,只有在算上0變1小的一方沒有0的情況下才無解.
解就是0算作1加起來的最大那個和.

復雜度:

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

代碼:

class Solution {public long minSum(int[] nums1, int[] nums2) {long n=0,m=0;boolean a,b;a=b=true;for (int i : nums1) {if (i > 0)n += i;else{n++;a=false;}}for (int i : nums2) {if (i > 0)m += i;else{m++;b=false;}}if(m>n&&a||m<n&&b){return -1;}else return Math.max(m,n);}
}

總結

練習了遞增子序列,連續遞增子序列,公共子序列問題.

往期打卡

代碼隨想錄算法訓練營第三十五&三十六天

代碼隨想錄算法訓練營第三十四天

代碼隨想錄算法訓練營第三十三天(補)

代碼隨想錄算法訓練營第三十二天

代碼隨想錄算法訓練營第三十一天

代碼隨想錄算法訓練營第三十天(補)

代碼隨想錄算法訓練營第二十九天

代碼隨想錄算法訓練營第二十八天

代碼隨想錄算法訓練營第二十七天(補)

代碼隨想錄算法訓練營第二十六天

代碼隨想錄算法訓練營第二十五天

代碼隨想錄算法訓練營第二十四天

代碼隨想錄算法訓練營第二十三天

代碼隨想錄算法訓練營周末四

代碼隨想錄算法訓練營第二十二天(補)

代碼隨想錄算法訓練營第二十一天

代碼隨想錄算法訓練營第二十天

代碼隨想錄算法訓練營第十九天

代碼隨想錄算法訓練營第十八天

代碼隨想錄算法訓練營第十七天

代碼隨想錄算法訓練營周末三

代碼隨想錄算法訓練營第十六天

代碼隨想錄算法訓練營第十五天

代碼隨想錄算法訓練營第十四天

代碼隨想錄算法訓練營第十三天

代碼隨想錄算法訓練營第十二天

代碼隨想錄算法訓練營第十一天

代碼隨想錄算法訓練營周末二

代碼隨想錄算法訓練營第十天

代碼隨想錄算法訓練營第九天

代碼隨想錄算法訓練營第八天

代碼隨想錄算法訓練營第七天

代碼隨想錄算法訓練營第六天

代碼隨想錄算法訓練營第五天

代碼隨想錄算法訓練營周末一

代碼隨想錄算法訓練營第四天

代碼隨想錄算法訓練營第三天

代碼隨想錄算法訓練營第二天

代碼隨想錄算法訓練營第一天

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

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

相關文章

【Java ee初階】網絡原理

TCP協議 1.確認應答 實現可靠傳輸的核心機制 2.超時重傳 實現可靠傳輸的核心機制 3.連接管理 網絡部分最高頻的面試題 4.滑動窗口 提高傳輸效率的機制 5.流量控制 依據接收方的處理能力&#xff0c;限制發送方的發送速度。 6.擁塞控制 依據傳輸鏈路的處理能力&#xff0c…

B站取關腳本

個人的賬號可能被盜了&#xff0c;發現關注數量蹦到3000多&#xff0c;然后b站沒有一鍵取關的按鈕&#xff0c;并且對api的訪問有速度限制&#xff0c;然后網上的腳本很多都已經失效了&#xff0c;所以自己稍微寫個簡陋的 測試時間: 2025.05.11 使用步驟: 進入b站的關注頁面…

PyGame游戲開發(含源碼+演示視頻+開結題報告+設計文檔)

前言&#xff1a; 大二小學期python課上基于pygame做的一個游戲小demo&#xff0c;當時老師花了一天講解了下python基礎語法后&#xff08;也是整個大學四年唯一學習python的時間&#xff09;&#xff0c;便讓我們自學網課一周然后交項目&#xff0c;所以做的非常倉促&#xff…

使用 React 實現語音識別并轉換功能

在現代 Web 開發中&#xff0c;語音識別技術的應用越來越廣泛。它為用戶提供了更加便捷、自然的交互方式&#xff0c;例如語音輸入、語音指令等。本文將介紹如何使用 React 實現一個簡單的語音識別并轉換的功能。 功能概述 我們要實現的功能是一個語音識別測試頁面&#xff0…

C++ 雙峰高斯函數擬合

C 雙峰高斯函數擬合 一維高斯函數二維高斯函數多維高斯函數一維雙峰高斯函數代碼實現 二維雙峰高斯函數代碼實現 多維多峰高斯函數 在數據分析與清洗中經常遇到這樣的數據&#xff1a;數據不僅僅向單個中心靠攏&#xff0c;而是類似分段的向兩個甚至多個中心靠攏。數據向單個中…

【RP2350】香瓜樹莓派RP2350之LED

本文最后修改時間&#xff1a;2025年05月10日 01:57 一、本節簡介 本節以樹莓派pico2開發板為例&#xff0c;舉例如何寫一個LED驅動加進工程里。 二、實驗平臺 1、硬件平臺 1&#xff09;樹莓派pico2開發板 ①樹莓派pico2開發板&#xff08;作為仿真器&#xff09; ②micr…

機器人運動控制原理淺析-UC Berkeley超視覺模態模型

加州伯克利發布的超視覺多感知模態融合(FuSe, Fuse Heterogeneous Sensory Data)模型&#xff0c;基于視覺、觸覺、聽覺、本體及語言等模態&#xff0c;利用自然語言跨模態對齊(Cross-Modal Grounding)優調視覺語言動作等通用模型&#xff0c;提高模型任務成功率。 總體框架 …

【Bootstrap V4系列】學習入門教程之 組件-媒體對象(Media object)

Bootstrap V4系列 學習入門教程之 組件-媒體對象&#xff08;Media object&#xff09; 媒體對象&#xff08;Media object&#xff09;一、Example二、Nesting 嵌套三、Alignment 對齊四、Order 順序五、Media list 媒體列表 媒體對象&#xff08;Media object&#xff09; B…

解決VirtualBox中虛擬機(ubuntu)與主機(windows)之間互相復制粘貼(文本)

一.開始的設置 1.在VirtualBox中打開設置&#xff0c;常規中修改主機與虛擬機交互設置 2.虛擬機關閉狀態下&#xff0c;存儲中選中控制器SATA&#xff0c;勾選‘使用主機輸入輸出’ 3.選中操作系統對應的虛擬文件&#xff0c;.vdi文件&#xff0c;勾選右邊的固態驅動器。 4.啟…

java 多核,多線程,分布式 并發編程的現狀 :從本身的jdk ,到 spring ,到其它第三方。

Java 在多核、多線程和高性能編程領域提供了豐富的現成框架和工具&#xff0c;既有標準庫中的并發組件&#xff0c;也有第三方框架。以下是一些關鍵框架及其應用場景的總結&#xff1a;便于后面我們站在巨人的肩膀上&#xff0c;繼續前行 一、Java 標準庫中的多線程框架 Execut…

Nodejs核心機制

文章目錄 前言 前言 結合 Node.js 的核心機制進行說明&#xff1a; 解釋事件循環的各個階段。 答案 Node.js 事件循環分為 6 個階段&#xff0c;按順序執行&#xff1a; Timers&#xff1a;執行 setTimeout 和 setInterval 的回調。 Pending I/O Callbacks&#xff1a;處理系…

C++筆記6:數字字面量后綴和前綴總結

在C中&#xff0c;可以在數字字面量后面添加字母后綴&#xff08;或前綴&#xff09;來表示特定的數據類型。這些后綴能夠明確指定字面量的類型&#xff0c;避免類型轉換帶來的潛在問題。以下是常見的幾種類型后綴及其含義&#xff1a; 1. 整數后綴 u 或 U&#xff1a;表示 u…

50.輻射抗擾RS和傳導抗擾CS測試環境和干擾特征分析

輻射抗擾RS和傳到抗擾CS測試環境和干擾特征分析 1. 輻射抗擾RS2. 傳導抗擾CS 1. 輻射抗擾RS 輻射抗擾RS考察對外界電磁場干擾得抗擾能力&#xff0c;測試頻段為80MHz~2000MHz&#xff0c;用1KHz得正弦波進行調幅&#xff0c;在電波暗室內進行。測試標準&#xff1a;IEC 61000-…

Java多態詳解

Java多態詳解 什么是多態&#xff1f; 比如我們說&#xff1a;“駕駛一輛車”&#xff0c;有人開的是自行車&#xff0c;有人開的是摩托車&#xff0c;有人開的是汽車。雖然我們都說“開車”&#xff0c;但“怎么開”是由具體的車類型決定的&#xff1a;“開”是統一的動作&a…

問題及解決01-面板無法隨著窗口的放大而放大

在MATLAB的App Designer中&#xff0c;默認情況下&#xff0c;組件的位置是固定的&#xff0c;不會隨著父容器的大小變化而改變。問題圖如下圖所示。 解決&#xff1a; 為了讓Panel面板能夠隨著UIFigure父容器一起縮放&#xff0c;需要使用布局管理器&#xff0c;我利用 MATLA…

【GESP真題解析】第 20 集 GESP 二級 2025 年 3 月編程題 2:時間跨越

大家好,我是莫小特。 這篇文章給大家分享 GESP 二級 2025 年 3 月編程題第 2 題:時間跨越。 題目鏈接 洛谷鏈接:B4260 時間跨越 一、完成輸入 根據題意,輸入包含五行,每行一個正整數,分別代表 y,m,d,h,k。 注意到數據范圍:對于全部數據,保證有 2000≤y≤3000,1≤m≤…

GTS-400 系列運動控制器板卡介紹(二十一)---電子齒輪跟隨

運動控制器函數庫的使用 運動控制器驅動程序、dll 文件、例程、Demo 等相關文件請通過固高科技官網下載,網 址為:www.googoltech.com.cn/pro_view-3.html 1 Windows 系統下動態鏈接庫的使用 在 Windows 系統下使用運動控制器,首先要安裝驅動程序。在安裝前需要提前下載運動…

軟件工程之需求分析涉及的圖與工具

需求分析與規格說明書是一項十分艱巨復雜的工作。用戶與分析員之間需要溝通的內容非常的多&#xff0c;在雙方交流信息的過程中很容易出現誤解或遺漏&#xff0c;也可能存在二義性。如何才能更加準確的表達雙方的意思&#xff0c;且清楚明了&#xff0c;繪制各類圖形就顯得非常…

藍橋杯14屆 數三角

問題描述 小明在二維坐標系中放置了 n 個點&#xff0c;他想在其中選出一個包含三個點的子集&#xff0c;這三個點能組成三角形。然而這樣的方案太多了&#xff0c;他決定只選擇那些可以組成等腰三角形的方案。請幫他計算出一共有多少種選法可以組成等腰三角形&#xff1f; 輸…

在Fiddler中添加自定義HTTP方法列并高亮顯示

在Fiddler中添加自定義HTTP方法列并高亮顯示 Fiddler 是一款強大的 Web 調試代理工具&#xff0c;允許開發者檢查和操作 HTTP 流量。一個常見需求是自定義 Web Sessions 列表&#xff0c;添加顯示 HTTP 方法&#xff08;GET、POST 等&#xff09;的列&#xff0c;并通過顏色區…