算法day04

第一題?:

209.?長度最小的子數組

有上題可知,我們會采用雙指針和單調性的思路來解決

? ? ? ? 我們本題采用左右雙指針從數組的0位置同向前進,所以將此類模型稱為滑塊;

步驟思路如下:

步驟一:

? ? ? ? 定義所有雙指針都指向數組的0號位置;

步驟二:數組進窗口

? ? ? ? 右指針開始向右移動;

步驟三:判斷是否數組進窗口或者出窗口

? ? ? ? 當當前窗口中的數字sum小于t時,右指針繼續向右移動,直到數組之和大于等于t;

? ? ? ? 如上圖所示,當前的左指針向右移動,將左指針之前所指的元素退出窗口;

此時重復上述的操作,直到right指針到達數組的最右端;

同時我們每一次在判斷sum和要要求值之后都要更新len變量的結果

? ? ? ? 代碼如下所示:

class Solution {public int minSubArrayLen(int target, int[] nums) {int n = nums.length,sum = 0,lenght = Integer.MAX_VALUE;for(int left = 0,right = 0;right < n;right++){sum +=nums[right];while(sum >= target){lenght = Math.min(lenght,(right-left+1));sum -=nums[left];left ++;}}return lenght == Integer.MAX_VALUE ? 0:lenght;}
}

第二題:

3.?無重復字符的最長子串

如上題所示:

? ? ? ? 本題采用滑塊的相關知識點,如上題故事;

本題主要會采用如下的創新點:

?//把字符串變成字符數組,s1里面的每一個元素都是每一個字符的ascall值

? ? char[] s = ss.toCharArray();

//用數組模擬哈希表

//即用數組的下標為0的字符來表示ascall值為1 的數組。。。

//用數組里面的數字來表示該字符在hash值里面出現的次數

? ? int[] hash = new int[128];

用ascall值來映射數組中的字符,同時用數組來類似于hash表,當hash表中存放相應字符的出現次數,每次有相應的字符進入滑塊,該字符的出現次數加一,當該hash中相應的位置如果存放的數值大于一時,則滑塊中有重復的字符,應該采取進一步的措施;

解題步驟如下:

步驟一:

? ? ? ? 定義所有雙指針都指向數組的0號位置;

步驟二:數組進窗口

? ? ? ? 讓字符開始進入hash表;該數組存放的hash表的位置上數據+1;

判斷當右指針所指的hash表中數據>1時,我們要移動左指針,將之前進入到窗口里面的元素出去,同時hash表中的數據--;

? ? ? ? 同時每一次元素出窗口之后要更新窗口長度并記錄在案;

代碼如下所示:

class Solution {public int lengthOfLongestSubstring(String ss) {//把字符串變成字符數組,s1里面的每一個元素都是每一個字符的ascall值char[] s = ss.toCharArray();//用數組模擬哈希表//即用數組的下標為0的字符來表示ascall值為1 的數組。。。//用數組里面的數字來表示該字符在hash值里面出現的次數int[] hash = new int[128];int n = s.length;int  res =  0;for(int left = 0,right = 0;right < n;){hash[s[right]] ++;while(hash[s[right]] > 1){hash[s[left]] --;left ++;res= Math.max(res,right-left+1); }res= Math.max(res,right-left+1);right++;} return res;}
}

ps:本次的內容就到這里了,如果對你有所幫助的話,就請一鍵三連哦,文章圖片是我喜歡的xox,在這里給大家安利一下哦!!!

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

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

相關文章

Prompt提示詞的技巧

Prompt提示詞的技巧 要讓GPT類模型產生最符合我們需求的輸出&#xff0c;我們需要精心設計和調整輸入的提示詞&#xff08;Prompt&#xff09;。 1、明確性&#xff1a; 確保你的提示詞清晰、具體。GPT類模型會根據你給出的信息來生成文本&#xff0c;因此&#xff0c;提供詳…

【實踐】使用vscode來debug go程序的嘗鮮

配置 首先&#xff0c;當然得配置好vscode 的go環境&#xff0c; 裝個go插件就基本滿足了 配置 launch.json, 可以配置多個環境的程序啟動參數&#xff08;很友好&#xff09; {"version": "0.2.0","configurations": [{"name": &…

ArrayList與LinkedList的區別

一、背景與現狀 在Java編程中&#xff0c;ArrayList和LinkedList都是實現List接口的重要類&#xff0c;用于存儲和操作動態大小的元素集合。兩者在Java集合框架中占據了核心地位&#xff0c;并被廣泛應用于各種軟件項目中。然而&#xff0c;盡管它們都提供了類似的功能&#x…

海外客戶開發渠道有哪些

海外客戶開發是一個多元化的過程&#xff0c;涉及線上與線下多個渠道。以下是一些有效的海外客戶開發渠道&#xff1a; 平臺電商&#xff1a; 利用國際B2B電商平臺&#xff0c;如阿里巴巴國際站、 Globalsources、Made-in-China等&#xff0c;這些平臺擁有龐大的國際買家流量&a…

STM32學習和實踐筆記(27):USART串口通信實驗程序

本實驗所要實現的功能是&#xff1a;STM32F1通過USART1實現與PC機對話&#xff0c;STM32F1的USART1收到PC機發來的數據后原封不動的返回給PC機顯示。同時使用D1指示燈不斷閃爍提示系統正常運行。程序框架如下&#xff1a; &#xff08;1&#xff09;初始化USART1&#xff0c;并…

linux 開發常用命令

一、查看 相關服務 1.查看 數據庫 相關服務 這里以mysql 和 redis 為例 &#xff08;1&#xff09;使用 ps 命令 執行命令會列出&#xff0c;“mysql”、“redis”名稱的進程 ps aux | grep redis 示例&#xff1a; rootspray:~# ps aux | grep mysql mysql 1609816 0.…

Flutter 中的 FilterChip 小部件:全面指南

Flutter 中的 FilterChip 小部件&#xff1a;全面指南 在 Flutter 中&#xff0c;FilterChip 是一種特殊類型的 Chip&#xff0c;用于呈現過濾選項。用戶可以通過點擊 FilterChip 來應用相應的過濾條件&#xff0c;這在需要對列表或集合進行篩選的場景中非常有用&#xff0c;如…

51單片機實現俄羅斯方塊游戲編程

一、設計要求 &#xff08;1&#xff09;利用51單片機&#xff0c;設計一款俄羅斯方塊游戲&#xff0c;完成硬件電路的開發和程序的編寫調試&#xff1b; &#xff08;2&#xff09;采用LCD12864液晶作為游戲運行界面&#xff1b; &#xff08;3&#xff09;利用按鍵輸入靈活…

Spring Boot集成dubbo快速入門Demo

1.什么是dubbo&#xff1f; Apache Dubbo 是一款微服務開發框架&#xff0c;它提供了 RPC通信 與 微服務治理 兩大關鍵能力。這意味著&#xff0c;使用 Dubbo 開發的微服務&#xff0c;將具備相互之間的遠程發現與通信能力&#xff0c; 同時利用 Dubbo 提供的豐富服務治理能力…

HTML飄落的花瓣

目錄 寫在前面 HTML???????簡介 完整代碼 代碼分析 系列推薦 寫在最后 寫在前面 本期小編給大家推薦HTML實現的飄落的花瓣&#xff0c;無需安裝軟件&#xff0c;直接下載即可打開~ HTML???????簡介 HTML&#xff08;Hypertext Markup Language&#xff…

探索Playwright:Python下的Web自動化測試革命

在如今這個互聯網技術迅速發展的時代&#xff0c;web應用的質量直接關系著企業的聲譽和用戶的體驗。因此&#xff0c;自動化測試成為了保障軟件質量的重要手段之一。今天&#xff0c;我將帶大家詳細了解一款在測試領域大放異彩的神器——Playwright&#xff0c;并通過Python語言…

一覺醒來 AI科技圈發生的大小事兒 05月13日

&#x1f4f3;博弈論讓 AI 更加正確、高效&#xff0c;LLM 與自己競爭 研究團隊設計了共識博弈&#xff0c;通過讓語言模型的生成器和判別器相互博弈來提高模型的準確性和內部一致性。這種方法不需要對基礎模型進行訓練或修改&#xff0c;可以在筆記本電腦上快速執行。研究結果…

基于微信小程序+JAVA Springboot 實現的【停車場小程序】app+后臺管理系統 (內附設計LW + PPT+ 源碼+ 演示視頻 下載)

項目名稱 項目名稱&#xff1a; 停車場微信小程序的設計與實現 在當前信息技術飛速發展的背景下&#xff0c;停車場微信小程序的開發成為了一個創新的解決方案&#xff0c;旨在提高停車場管理的效率和用戶的停車體驗。本項目通過深入分析現有停車場管理系統的不足&#xff0c…

內存屏障 - LINUX KERNEL MEMORY BARRIERS 上 與 下

內存屏障&#xff08;Memory Barrier&#xff09;是在計算機體系結構中使用的一種同步機制&#xff0c;用于確保在多線程或多核處理器環境中&#xff0c;對共享內存的操作按照預期順序進行。它們通過強制在特定點執行一些指令來規定內存訪問的順序&#xff0c;并防止內存亂序執…

弱網對抗的策略有哪些?

在弱網環境下&#xff0c;數據傳輸可能會面臨丟包、延遲、抖動等問題&#xff0c;因此采取合適的弱網對抗策略對于確保數據傳輸的穩定性和可靠性至關重要。以下是一些常見的弱網對抗策略&#xff1a; 數據壓縮&#xff1a;使用壓縮算法如Gzip、Brotli等對數據進行壓縮&#xf…

Linux-vi/vim

vi是一個文本編輯器&#xff0c;用于撰寫文檔或開發程序 vim是vi的增強版&#xff0c;功能一致&#xff0c;可視化效果更好一些&#xff0c;去鼠標化&#xff0c;編輯更加方便&#xff0c;可定制化 vim編輯器是一個模式化文本編輯工具 vim有三種模式 編輯模式、插入模式和末…

使用PageHelper分頁插件,發現獲取到的total總記錄數量不對,無法獲取到正確的total數量

目錄 1.1、錯誤描述 1.2、解決方案 1.1、錯誤描述 周一在工作中&#xff0c;寫了一個列表分頁的接口&#xff0c;其中使用的是PageHelper分頁依賴&#xff0c;原本想著挺簡單的&#xff0c;也就是使用PageHelper.startPage(pageNum, pageSize);方法就可以了&#xff0c;代碼…

Linux下COOLFluiD源碼編譯安裝及使用

目錄 軟件介紹 基本依賴 其它可選依賴 一、源碼下載 二、解壓縮&#xff08;通過Github下載zip壓縮包格式&#xff09; 三、編譯安裝 3.1 依賴項-BOOST 3.2 依賴項-Parmetis 3.3 依賴項-PETSc 3.4 安裝COOLFluiD 四、算例運行 軟件介紹 COOLFluiD&#xff08;面向對象…

學術共振 美妙發聲 | 2024美沃斯大會完美收官,米蘭柏羽傾力承辦

5月10日-5月12日&#xff0c;為期3天的第十七屆美沃斯醫療美容大會在杭州國際博覽中心盛大舉辦&#xff0c;作為行業頂級學術交流平臺&#xff0c;本屆美沃斯大會不僅是醫美行業的一次學術交流盛會&#xff0c;更是一次深度探討行業未來的遠眺之窗。 5月9日&#xff0c;即美沃…

golang中switch-case及select-cas

switch a{ case b: 執行內容b case c: 執行內容c } golang中case后自帶break跳出功能&#xff0c;既&#xff1a;滿足case b 執行內容b后自動跳出&#xff0c;不會去走case c select { case <- ch1: 執行內容b case -<ch2: 執行內容c default: fmt.Println("chan…