leetcode 3202. 找出有效子序列的最大長度 II 中等

給你一個整數數組?nums?和一個??整數?k?。

nums?的一個?子序列?sub?的長度為?x?,如果其滿足以下條件,則稱其為?有效子序列?:

  • (sub[0] + sub[1]) % k == (sub[1] + sub[2]) % k == ... == (sub[x - 2] + sub[x - 1]) % k

返回?nums?的?最長有效子序列?的長度。

示例 1:

輸入:nums = [1,2,3,4,5], k = 2

輸出:5

解釋:

最長有效子序列是?[1, 2, 3, 4, 5]?。

示例 2:

輸入:nums = [1,4,2,3,1,4], k = 3

輸出:4

解釋:

最長有效子序列是?[1, 4, 1, 4]?。

提示:

  • 2 <= nums.length <= 10^3
  • 1 <= nums[i] <= 10^7
  • 1 <= k <= 10^3

分析:

根據有效子序列的定義,可以發現,子序列中所有奇數下標的元素模 k 同余,偶數下標的元素模 k 同余。考慮子序列最后兩個元素的模 k 的余數,一共有 k^2?種可能性。用二維數組 dp 來表示子序列的最大長度,dp[i][j] 表示一個有效子序列,最后兩個元素模 k 的余數分別是 i 和 j,它的最大長度。

遍歷 nums 來更新 dp[i][j]。每遍歷到一個數字 num,我們就試圖將其加入子序列。具體來說,此時最后一個元素模 k 為 nummodk=curr,然后我們遍歷前一個元素模 k 所有的可能性 prev,將 dp[prev][curr] 更新為 dp[curr][prev]+1。最后返回二維數組的最大值即可。

int maximumLength(int* nums, int numsSize, int k) {int dp[k+5][k+5];memset(dp,0,sizeof(dp));int ans=0;for(int i=0;i<numsSize;++i){int cnt=nums[i]%k;for(int pre=0;pre<k;++pre){dp[pre][cnt]=dp[cnt][pre]+1;ans=fmax(ans,dp[pre][cnt]);}}return ans;
}

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

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

相關文章

Mysql測試題

1 Which Linux MySQL server installation directories are the base directories? (Choose two) /usr/sbin /var/lib/mysql /var/log /usr/bin /etc 2 What does the RPM installation process for MySQL do? (Choose two) It creates the default my.cnf file It se…

自動化測試工具 Selenium 入門指南

Selenium 是一款強大的自動化測試工具&#xff0c;可用于模擬用戶在瀏覽器中的各種操作。它支持多種瀏覽器&#xff08;如 Chrome、Firefox、Edge 等&#xff09;和多種編程語言&#xff08;如 Python、Java、C# 等&#xff09;&#xff0c;廣泛應用于 Web 應用程序的自動化測試…

Hystrix與Resilience4j在微服務熔斷降級中的應用對比與實戰

Hystrix與Resilience4j在微服務熔斷降級中的應用對比與實戰 1. 問題背景介紹 在微服務架構中&#xff0c;服務之間的依賴使得鏈路調用更加復雜。一旦某個下游服務發生故障或響應延遲&#xff0c;可能導致整個調用鏈阻塞甚至雪崩&#xff0c;影響系統可用性。熔斷&#xff08;Ci…

PostgreSQL數據庫集群如何進行自動化性能監測?

前言&#xff1a;在這個數據爆炸的時代&#xff0c;PostgreSQL數據庫集群就像是我們的"數據寶庫"。但是&#xff0c;再好的寶庫也需要有專業的"保安"來守護。今天我們就來聊聊如何給PostgreSQL集群配備一套智能的"保安系統"——自動化性能監測。…

OneCode體系架構深度剖析:設計哲學與AI增強之道

引言 在企業級應用開發領域&#xff0c;架構設計決定了系統的擴展性、可維護性與演進能力。OneCode作為一站式開發平臺&#xff0c;其架構設計蘊含著對復雜業務場景的深刻理解與技術選型的前瞻性思考。本文將從六個維度系統剖析OneCode的架構設計理念&#xff0c;揭示其模塊劃分…

AWS中國區資源成本優化全面指南:從理論到實踐

引言:為什么AWS中國區成本優化如此重要? 在數字化轉型的浪潮中,越來越多的中國企業選擇AWS中國區作為其云計算服務提供商。然而,隨著業務規模的擴大,云資源成本往往成為企業關注的焦點。有效的成本優化不僅能夠直接降低IT支出,還能提高資源利用效率,為企業創造更大的商…

Redis中什么是看門狗機制

在 Redis 中&#xff0c;“看門狗機制”&#xff08;Watchdog Mechanism&#xff09;不是 Redis 的核心機制之一&#xff0c;但它在一些場景中起到了重要作用&#xff0c;尤其是在使用 Redlock 分布式鎖實現 或在 Redis Enterprise 等高級用法中。一、看門狗機制的通用含義看門…

[MRCTF2020]PYWebsite

function enc(code){hash hex_md5(code);return hash;}function validate(){var code document.getElementById("vcode").value;if (code ! ""){if(hex_md5(code) "0cd4da0223c0b280829dc3ea458d655c"){alert("您通過了驗證&#xff01;…

AWS S3事件通知實戰:從配置到生產的完整指南

引言 在現代云架構中,事件驅動設計已成為構建可擴展、高可用系統的核心模式。AWS S3作為對象存儲服務,其事件通知功能為我們提供了強大的自動化處理能力。本文將基于一個真實的圖片處理系統案例,詳細介紹如何正確配置和使用S3事件通知。 業務場景 我們開發了一個圖片處理…

[AI-video] Web UI | Streamlit(py to web) | 應用配置config.toml

鏈接&#xff1a;https://reccloud.cn/start?positiontab1 docs&#xff1a;AI creates videos MoneyPrinterTurbo 是一個自動化短視頻創作流程的開源項目。 它通過輸入主題或關鍵詞&#xff0c;利用人工智能&#xff08;大語言模型&#xff09;生成腳本和搜索條件&#xff0…

CommonJS 功能介紹

CommonJS是JavaScript的模塊化規范&#xff0c;主要用于服務器端&#xff08;如Node.js&#xff09;的模塊化開發&#xff0c;其核心功能和特點如下&#xff1a; 一、核心功能模塊定義與導出 module.exports&#xff1a;用于導出模塊的內容&#xff0c;可以是函數、對象、變量等…

3D材質總監的“光影魔法”:用Substance Sampler AI,“擦除”照片中的光影

在三維視覺藝術的創作中&#xff0c;我們始終在探索一對核心的“對立統一”&#xff1a;一方面是**“現實世界的光照”&#xff08;Real-World Lighting&#xff09;&#xff0c;它被固定、“烘焙”在一張照片的像素之中&#xff1b;另一方面是“虛擬世界的光照”&#xff08;V…

從高斯噪聲的角度分析MAE和MSE

文章目錄1. MAE與MSE的本質區別2. 高斯噪聲下的統計特性3. MAE導致稀疏解的內在機制4. 對比總結1. MAE與MSE的本質區別 MAE&#xff08;Mean Absolute Error&#xff09;和MSE&#xff08;Mean Squared Error&#xff09;是兩種常用的損失函數&#xff0c;它們的數學形式決定了…

AR智能巡檢:制造業零缺陷安裝的“數字監工”

在制造業中&#xff0c;設備安裝與組裝環節的準確性是產品質量和生產效率的關鍵。傳統的人工巡檢和紙質作業指導書容易因人為疏忽、經驗不足或信息滯后導致安裝錯誤&#xff0c;進而引發返工、延誤甚至安全事故。然而&#xff0c;隨著增強現實&#xff08;AR www.teamhelper.cn…

js最簡單的解密分析

js最簡單的解密分析 一、JavaScript 代碼保護技術簡介 ? 為什么要保護 JavaScript 代碼&#xff1f; JavaScript 是前端語言&#xff0c;代碼在瀏覽器中是完全可見的。這意味著&#xff1a; 別人可以輕松查看你的核心算法或業務邏輯頁面上的接口地址、加密邏輯等容易被抓包分析…

React強大且靈活hooks庫——ahooks入門實踐之開發調試類hook(dev)詳解

什么是 ahooks&#xff1f; ahooks 是一個 React Hooks 庫&#xff0c;提供了大量實用的自定義 hooks&#xff0c;幫助開發者更高效地構建 React 應用。其中開發調試類 hooks 是 ahooks 的一個重要分類&#xff0c;專門用于開發調試階段&#xff0c;幫助開發者追蹤組件更新和副…

React強大且靈活hooks庫——ahooks入門實踐之副作用類hook(effect)詳解

什么是 ahooks&#xff1f; ahooks 是一個 React Hooks 庫&#xff0c;提供了大量實用的自定義 hooks&#xff0c;幫助開發者更高效地構建 React 應用。其中副作用類 hooks 是 ahooks 的一個重要分類&#xff0c;專門用于處理各種副作用操作&#xff0c;如定時器、防抖、節流等…

SpringBoot一Web Flux、函數式Web請求的使用、和傳統注解@Controller + @RequestMapping的區別

一、函數式 Web 在 Spring Boot 中&#xff0c;使用函數式 Web&#xff08;Function-based Web&#xff09;可以通過 RouterFunction 和 HandlerFunction 來定義路由和請求處理邏輯。這種方式與傳統的注解驅動的方式不同&#xff0c;它更加簡潔&#xff0c;并且適合響應式編程。…

Vue+Cesium快速配置指南

安裝必要依賴在項目根目錄下運行以下命令安裝vue-cesium和cesium&#xff1a;npm install vue-cesium3.1.4 cesium1.84配置Vite在vite.config.js文件中添加以下配置&#xff1a;import { defineConfig } from vite import vue from vitejs/plugin-vue import { resolve } from …

礦業自動化破壁者:EtherCAT轉PROFIBUS DP網關的井下實戰

在深井鉆機的轟鳴、礦石輸送帶的奔流與通風設備的不息運轉中&#xff0c;礦業生產的脈搏強勁跳動。然而&#xff0c;這片創造價值的土地&#xff0c;卻為自動化技術的深入設置了嚴苛的考場&#xff1a;信息孤島林立&#xff1a; 高效現代的EtherCAT控制系統與井下大量穩定服役的…