LeetCode 面試150

最近準備面試,我以前不愿意面對的

現在保持一顆本心,就是專注于算法思想,語言基礎的磨煉;

不為速成,不急功近利的想要比賽,或者為了面試。

單純的本心,體驗算法帶來的快樂,是一件非常了不起的事。

加油,持續輸出~

戰勝恐懼最好的方法,就是面對

一、滑動窗口

1.1 最小覆蓋子串

集成度越高的結構體(unordered_map)再使用上雖然方便,但遇到多次循環處理,處理速度不如用vector維護的可變數組;

把兩組映射轉換為一個數組,非常巧妙;

運行速度真的是見仁見電腦嗎?我參考的1ms 的寫法,甚至把他的源碼,放我的LeetCode提交,我的最快也還是3ms。

(想到了飛馳人生2,雖然比不上專業賽車,只要你苦練技術,一定可以超越自己)

/*滑動窗口 O(1)
對于一個數組、字符串、鏈表 原串 s 目標串 t 最終結果 res
定義兩個hash map: hs 負責記錄滑動窗口,ht 負責目標串
定義i,j兩個指針,i負責擴展,滿足條件 cnt 計數器++
j負責縮圈 當滿足條件,j--
*/
//模板
string minWindow(string s, string t) {unordered_map<char, int> hs, ht;for(auto a : t)ht[a]++;int cnt = 0;string res = "";for(int i=0, j=0; i < s.size(); i++){hs[s[i]]++;if(hs[s[i]] <= ht[s[i]])//條件可根據實際發生變化cnt++;while(hs[s[j]] > ht[s[j]]) //縮圈hs[s[j++]]--;if(cnt == t.size() && (res == ""||res.size() > (i-j+1))){//條件根據實際情況res = s.substr(j, i-j+1);}}return res;
}
對于字符串也可以用vector, 更節省時間string minWindow(string s, string t) {//unordered_map<char, int> hs, ht;vector<int> ht(128,0);for(auto a : t)ht[a]++;int cnt = 0;//string res = "";int rlen = INT_MAX;int len = t.size();int i=0, j=0, rj = 0, ri = 0;for(; i < s.size(); i++){//hs[s[i]]++;//if(hs[s[i]] <= ht[s[i]])char c = s[i];if(ht[c] > 0){cnt++;}   ht[c]--; //每個字符都減掉,如果是目標字符都是0,說明找到了,如果是-1 說明遇到重復的了需要縮圈//while(hs[s[j]] > ht[s[j]]) // hs[s[j++]]--;if(cnt == len) {while(ht[s[j]]<0){ht[s[j]]++;//把多減掉的不回來j++; //指針往后移動,繼續縮圈,就是刪掉不用重復的字符} if(rlen > (i-j+1)) //更新目標子串{rlen = (i-j+1);ri = i;rj = j;}}}if(rlen != INT_MAX)return s.substr(rj, ri-rj+1);elsereturn "";      }

1.2 長度最小子數組

輸入輸出流的取消能快很多+一些特殊判斷

auto optimize_cpp_stdio=[](){std::ios::sync_with_stdio(false);std::cin.tie(nullptr);std::cout.tie(nullptr);return 0;
}();
class Solution {
public:int minSubArrayLen(int target, vector<int>& nums) {int hs = 0;int nlen = nums.size();int len = nlen + 1;for(int i=0,j=0; i < nlen; i++){hs+= nums[i];            while(hs-nums[j] >= target){hs=hs-nums[j]; j++;} if(hs >= target && len > i-j+1)len = i-j+1;if(len == 1)return 1;}if(len!=nlen+1)return len;elsereturn 0;}
};

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

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

相關文章

Python操作MySQL數據庫的工具--sqlalchemy

文章目錄 一、pymysql和sqlalchemy的區別二、sqlalchemy的詳細使用1.安裝庫2.核心思想3.整體思路4.sqlalchemy需要連接數據庫5.使用步驟1.手動提前創建數據庫2.使用代碼創建數據表3.用代碼操作數據表3.1 增加數據3.2 查詢數據3.3 刪除數據3.4 修改數據 一、pymysql和sqlalchemy…

2025秋招深度學習基礎面試題(一)

01. 卷積和BN如何融合提升推理速度 Conv和BN的融合:在網絡的推理階段,可以將BN層的運算融合到Conv層中,減少運算量,加速推理。本質上是修改了卷積核的參數,在不增加Conv層計算量的同時,略去了BN層的計算量。def fuse_conv_bn(conv, bn):std = (bn.running_var + bn.eps).…

數據倉庫、數據中臺、大數據平臺之間的關系

數據行業經常會出現數據倉庫、數據中臺、大數據平臺等概念&#xff0c;容易產生疑問&#xff0c;它們中間是相等&#xff0c;還是包含的關系&#xff1f; 數據中臺和數據倉庫概念的關系 數據中臺概念是包含數據倉庫的&#xff0c;數據倉庫是數據中臺中的一部分&#xff0c;包含…

探索Facebook:數字社交的新時代

Facebook&#xff0c;作為全球最大的社交網絡平臺之一&#xff0c;一直在引領著數字社交的發展潮流。隨著科技的不斷進步和社會的不斷變遷&#xff0c;Facebook也在不斷演進和創新&#xff0c;迎接著數字社交的新時代。本文將探索Facebook在數字社交領域的新發展&#xff0c;以…

Behind the Code:Polkadot 如何重塑 Web3 未來

2024 年 5 月 17 日 Polkadot 生態 Behind the Code 第二季第一集 《創造 Web3 的未來》正式上線。第一集深入探討了 Polkadot 和 Web3 技術在解決數字身份、數據所有權和去中心化治理方面的巨大潛力。 &#x1f50d; 查看完整視頻&#xff1a; https://youtu.be/_gP-M5nUidc?…

抖音視頻怎么去水印保存部分源碼|短視頻爬蟲提取收集下載工具

抖音視頻怎么去水印保存部分源碼|短視頻爬蟲提取收集下載工具 抖音視頻去水印保存部分源碼&#xff1a; 通過使用Python中的requests、re和os等庫&#xff0c;可以編寫如下代碼來實現抖音視頻去水印保存的功能。 短視頻爬蟲提取手機下載工具的使用方法&#xff1a; 該工具主…

BevDet-4d(2): 環境安裝及效果展示

1. 環境安裝 conda create -n bevdet python=3.8 conda activate bevdet ? # 3 虛擬環境bevdet中安裝torch pip install spconv pip install torch==1.10.0+cu113 torchvision==0.11.0+cu113 torchaudio==0.10.0 -f https://download.pytorch.org/whl/torch

【數理統計02】延森Jensen‘s不等式的證明

延森不等式&#xff08;Jensen’s Inequality&#xff09;是凸函數理論中的一個重要結果&#xff0c;廣泛應用于概率論、統計學和優化理論等領域。這個不等式的基本形式是&#xff1a; 對于一個凸函數 f f f和一個隨機變量 X X X&#xff0c;如果 E [ X ] \mathbb{E}[X] E[X]存…

安科瑞為河南省促進分布式光伏發電健康持續發展提供解決方案

1 光伏、儲能運維市場分析 在光伏、儲能行業飛速發展的同時&#xff0c;已建的光伏、風力發電站和儲能系統的監控、運維管理項目的招標也非常多&#xff0c;2023年上半年&#xff0c;光伏電站開發企業運維招標規模28.6GW&#xff0c;同比增長204.3%&#xff0c;上述28.6GW招標…

Blender導出fbx模型,導入到ue5中模型丟失紋理材質

UE5系列文章目錄 文章目錄 UE5系列文章目錄前言一、問題原因二、最終效果 前言 Blender導出fbx模型&#xff0c;導入到ue5中&#xff0c;發現模型丟失紋理材質&#xff0c;里面的原神人物模型妮露居然是白模&#xff0c;郁悶了大半天 一、問題原因 我在Blender導出fbx文件時…

【Python】全局變量與init的區別

一個腳本里&#xff0c;設置全局變量&#xff0c;和初始化類時__init__中加載&#xff0c;有什么區別&#xff1f; 在Python腳本中&#xff0c;使用全局變量和在類的__init__方法中加載數據有幾個關鍵區別&#xff1a; 作用域&#xff1a; 全局變量&#xff1a;全局變量在整個…

C中十進制轉十六進制示例

uint8_t QR_code_RxBfr[255]{0}; uint8_t TouchCode[100];memcpy (&Sys.TouchCode[0], &QR_code_RxBfr[0], Sys.QR_code_Len);Str &Sys.TouchCode[TmpVble];Sys.Card_ID 0; while(0 ! isdigit(*Str)){Sys.Card_ID Sys.Card_ID*10 *Str - 0;Str;} 最后在通過以下…

嵌入式科普(18)Ubuntu在移動硬盤的安裝和啟動

目錄 一、概述 二、應用場景 三、移動硬盤安裝Ubuntu 3.1 移動硬盤格式化 3.2 VMware安裝Ubuntu到移動硬盤 四、電腦BIOS啟動移動硬盤Ubuntu 五、從VMware啟動移動硬盤Ubuntu 六、問題解決(坑)和思考提問 嵌入式科普(18)Ubuntu在移動硬盤的安裝和啟動 一、概述 在移動硬…

在R中贊揚下努力工作的你,獎勵一份CheetShet

傳說有個R&#xff0c;R里有個包&#xff0c;包的名字叫praise&#xff0c;會一直不停地夸贊你。 > praise() [1] "You are sensational!" > praise() [1] "You are luminous!" > praise() [1] "You are pioneering!" > praise() […

P1【知識點】【數據結構】【鏈表LinkedList】C++版

鏈表是一種邏輯上連續&#xff0c;內存上分散的線性表數據結構&#xff0c;是用一組任意的空間&#xff08;可以連續&#xff0c;也可以不連續&#xff09;來存放數據元素。每個數據元素成為一個”結點“&#xff0c;每個結點由數據域和指針域組成。 訪問元素&#xff08;Acce…

ABAP Json解析案例

ABAP解析返回的JSON 案例 DATA:LTOKEN TYPE STRING.DATA: LL_LINES(10),"行數LL_TABIX(10),"循環標號LL_PECNT TYPE P LENGTH 6 DECIMALS 2, "百分比LL_PECET(6),"百分數LL_TEXT(40)."消息CLEAR: LL_LINES,LL_TABIX,LL_PECNT,LL_PECET,LL_TEXT.* …

JVM優化之使用Jstack命令查找JVM死鎖

JVM優化之使用Jstack命令查找JVM死鎖 示例代碼 public class DeadLockDemo {private static Object lock1 new Object();private static Object lock2 new Object();public static void main(String[] args) {new Thread(() -> {synchronized (lock1) {try {System.out.p…

老的 IIS + MSSQL 網站遷移實例

因為公司需要從云上遷移回本地&#xff0c;但云平臺不愿意導出虛擬機文件&#xff0c;所以公司需要手工遷移。 查看了一下云主機&#xff0c;安裝了IIS&#xff0c;還有MSSQL數據庫&#xff0c;于是在本地搭建好相同的OSIISMSSQL 環境&#xff0c;在把數據庫導入完成、 IIS 搭建…

HX6203是一個完整的電池充電器控制器的兩個(8.4V)電池鋰離子電池芯片IC

一般描述 該HX6203是一個完整的電池充電器控制器的兩個(8.4V)電池鋰離子電池。HX6203為快速充電鋰離子電池提供了一種小巧、簡單、高效的解決方案。一個外部檢測電阻以高精度設置充電電流。 內部電阻分壓器和精密參考設置的最終浮動電壓為8.4V時&#xff0c;輸入…

全面提升工業物聯網的安全問題——青創智通

工業物聯網解決方案-工業IOT-青創智通 工業物聯網&#xff0c;作為現代工業制造領域的新興技術&#xff0c;正在引領一場全新的工業革命。它將傳感器、控制器、移動通信、智能分析等先進技術融入到工業生產過程的各個環節&#xff0c;極大地提高了制造效率&#xff0c;改善了產…