leetcode/hot100

文章目錄

  • 一、哈希
    • 1.兩數之和
    • 2.字母異位詞分組
    • 3.最長連續序列
  • 二、雙指針
    • 4. 移動零
    • 5.盛最多水的容器
    • 6.三數之和
    • 7.接雨水
  • 三、滑動窗口
    • 8.無重復字符的最長子串
    • 9.找到字符串中所有字母異位詞
  • 四、子串
    • 10.和為 K 的子數組

一、哈希

1.兩數之和

1. 兩數之和

class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {unordered_map<int,int> mp;for (int i = 0; i < nums.size(); i++) {auto num = mp.find(target - nums[i]);if (num != mp.end()) {return {i,num -> second};}else {mp[nums[i]] = i;}}return {-1,-1};}
};

2.字母異位詞分組

49. 字母異位詞分組

class Solution {
public:vector<vector<string>> groupAnagrams(vector<string>& strs) {vector<vector<string>> res;if (strs.size() == 0)return res;unordered_map<string,vector<string>> mp;for (auto t : strs) {string str = t;sort(str.begin(),str.end());mp[str].push_back(t);}for (auto it = mp.begin(); it != mp.end(); it ++) {res.push_back(it -> second);}return res;}
};

3.最長連續序列

128. 最長連續序列

class Solution {
public:int longestConsecutive(vector<int>& nums) {if (nums.size() == 0) return 0;unordered_set<int> mp;for (const int&nun : nums) {mp.insert(num);}	int res = 0;for (auto ch : mp) {if (!mp.count(ch - 1)) {int curNum = ch;int curStreak = 1;while (mp.count(curNum + 1)) {curNum += 1;curStreak += 1;}res = max(res,curStreak);}}return res;}};

二、雙指針

4. 移動零

283. 移動零

class Solution {
public:void moveZeroes(vector<int>& nums) {if (nums.size() == 0) return ;int slow = 0;int fast = 0;while (fast < nums.size()) {if (nums[fast] != 0) {nums[slow ++] = nums[fast];}fast ++;}for (int i = slow; i < nums.size(); i++) {nums[i] = 0;}}
};

5.盛最多水的容器

11. 盛最多水的容器

class Solution {
public:int maxArea(vector<int>& height) {int i = 0, j = height.size() - 1;int res = 0;while (i < j) {res = height[i] < height[j] ?max(res,(j - i) * height[i ++]) :max(res,(j - i) * height[j --]) ;}return res;}
};

6.三數之和

15. 三數之和

class Solution {
public:vector<vector<int>> threeSum(vector<int>& nums) {vector<vector<int>> res;if (nums.size() == 0) return res;sort(nums.begin(),nums.end());if (nums[0] > 0) return res;for (int k = 0; k < nums.size() - 2; k ++) {if (k > 0 && nums[k] == nums[k - 1]) continue;int i = k + 1,j = nums.size() - 1;while (i < j) {int sum = nums[k] + nums[i] + nums[j];if (sum < 0) {while (i < j && nums[i] == nums[++i]) ;}else if(sum > 0) {while (i < j && nums[j] == nums[--j]) ;}else {res.push_back(vector<int>{nums[k], nums[i], nums[j]});while (i < j && nums[i] == nums[++i]) ;while (i < j && nums[j] == nums[--j]) ;}}}return res;}
};

7.接雨水

42. 接雨水

三、滑動窗口

8.無重復字符的最長子串

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

class Solution {
public:int lengthOfLongestSubstring(string s) {unordered_map<char,int> windows;int left = 0,right = 0;int res = 0;int n = s.size();while (right < n) {char c = s[right];right ++;windows[c] ++;while (windows[c] > 1) {char d = s[left];left ++;windows[d] --;}res = max(res,right - left);}return res;}
};

9.找到字符串中所有字母異位詞

438. 找到字符串中所有字母異位詞

class Solution {
public:vector<int> findAnagrams(string s, string p) {unordered_map<char,int> need,window;for (char c : p) need[c] ++;int left = 0,right = 0;int vaild = 0;vector<int> res;while (right < s.size()) {char c = s[right];right ++;if (need.count(c)) { // 如果需要這個元素window[c] ++; // 窗口中的值 ++if (window[c] == need[c]) { // 如果窗口中的值和需要的值相等vaild++; // 有效值++{}}}while (right - left >= p.size()) { // 當現在的左右差大于子串p的大小if (vaild == need.size()) // 如果有效值 == needres.push_back(left); //  加入char d = s[left]; // 縮小窗口left ++;if (need.count(d)) {if (window[d] == need[d])vaild--;window[d]--;}}}return res;}
};

四、子串

10.和為 K 的子數組

560. 和為 K 的子數組

class Solution {
public:int subarraySum(vector<int>& nums, int k) {unordered_map<int,int> mp;mp[0] = 1;int count = 0,pre = 0;for (auto x : nums) {pre += x;if (mp.find(pre - k) != mp.end()) {count += mp[pre - k];}mp[pre] ++;}return count;}
};

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

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

相關文章

規則引擎Drools使用,0基礎入門規則引擎Drools(二)高級語法

文章目錄 系列文章索引五、規則屬性1、enabled屬性2、dialect屬性3、salience屬性4、no-loop屬性5、activation-group屬性6、agenda-group屬性7、auto-focus屬性8、timer屬性9、date-effective屬性10、date-expires屬性 六、Drools高級語法1、global全局變量2、query查詢3、fun…

20231122給RK3399的挖掘機開發板適配Android12

20231122給RK3399的挖掘機開發板適配Android12 2023/11/22 9:30 主要步驟&#xff1a; rootrootrootroot-X99-Turbo:~$ tar --use-compress-programpigz -xvpf rk356x_android12_220722.tgz rootrootrootroot-X99-Turbo:~$ cd rk_android12_220722/ rootrootrootroot-X99-Tur…

rk3568 適配以太網(mac 2 mac)

rk3568 適配以太網(mac 2 mac) MDI(Media Dependent Interface)是以太網中的一種接口標準,用于連接物理層(PHY)和數據鏈路層(MAC)之間的傳輸介質。 在以太網中,MDI通常通過RJ-45插座來實現,用于連接網線和網絡設備。MDI接口提供了電氣和機械特性,使得PHY和MAC能夠正…

Python通過串口收發文件

單位內外網是隔離的,USB對拷線被禁用,安全優盤使用太費事,就想到了通過串口傳輸文件. import serial from xmodem import XMODEM import osdef Send_File(filepath, portCOM8, baudrate115200):bn os.path.basename(filepath)filesize os.stat(filepath).st_sizestrSendFile…

帶記憶的超級GPT智能體,能做飯、煮咖啡、整理家務!

隨著AI技術的快速迭代&#xff0c;Alexa、Siri、小度、天貓精靈等語音助手得到了廣泛應用。但在自然語言理解和完成復雜任務方面仍然有限。 相比文本的標準格式&#xff0c;語音充滿復雜性和多樣性&#xff08;例如&#xff0c;地方話&#xff09;,傳統方法很難適應不同用戶的…

【每日OJ —— 20.有效的括號(棧)】

每日OJ —— 20.有效的括號&#xff08;棧&#xff09; 1.題目&#xff1a;20.有效的括號&#xff08;棧&#xff09;2.方法講解2.1.解法2.1.1.算法講解2.1.2.代碼實現2.1.3.提交通過展示 1.題目&#xff1a;20.有效的括號&#xff08;棧&#xff09; 2.方法講解 2.1.解法 利用…

2023 年 亞太賽 APMCM (B題)國際大學生數學建模挑戰賽 |數學建模完整代碼+建模過程全解全析

當大家面臨著復雜的數學建模問題時&#xff0c;你是否曾經感到茫然無措&#xff1f;作為2022年美國大學生數學建模比賽的O獎得主&#xff0c;我為大家提供了一套優秀的解題思路&#xff0c;讓你輕松應對各種難題。 問題一&#xff1a; 建立沒有作物的玻璃溫室內的溫度和風速分…

C語言二十四彈--喝汽水問題

C語言解決喝汽水問題 題目&#xff1a;喝汽水&#xff0c;1瓶汽水1元&#xff0c;2個空瓶可以換一瓶汽水&#xff0c;給20元&#xff0c;可以喝多少汽水&#xff1f; 方法一、逐瓶購買法 思路&#xff1a;一瓶瓶的買 當空瓶有兩個時&#xff0c;汽水數加1即可。 #include &…

MacOS 成為惡意軟件活動的目標

Malwarebytes 警告稱&#xff0c;一個針對 Mac 操作系統 (OS) 的數據竊取程序正在通過虛假的網絡瀏覽器更新分發給毫無戒心的目標。 Atomic Stealer&#xff0c;也稱為 AMOS&#xff0c;是 Mac OS 上流行的竊取程序。 Atomic Stealer (AMOS) 惡意軟件最近被發現使用“ClearFa…

ImportError: cannot import name ‘contextfilter‘ from ‘jinja2‘解決方案

大家好,我是愛編程的喵喵。雙985碩士畢業,現擔任全棧工程師一職,熱衷于將數據思維應用到工作與生活中。從事機器學習以及相關的前后端開發工作。曾在阿里云、科大訊飛、CCF等比賽獲得多次Top名次。現為CSDN博客專家、人工智能領域優質創作者。喜歡通過博客創作的方式對所學的…

匯編-pop出棧指令

32位匯編 執行動作分為兩步&#xff1a; 第一步&#xff1a;讀出數據 第二步&#xff1a;改變棧地址 如果操作數是16位&#xff0c; 則ESP加2&#xff1b; 如果操作數是32位&#xff0c; 則ESP加4 espesp2 或 espesp4 格式&#xff1a;

九、sdl顯示bmp圖片

前言 SDL中內置加載BMP的API&#xff0c;使用起來會更加簡單&#xff0c;便于初學者學習使用SDL 如果需要加載JPG、PNG等其他格式的圖片&#xff0c;可以使用第三方庫&#xff1a;SDL_image 測試環境&#xff1a; ffmpeg的4.3.2自行編譯版本windows環境qt5.12sdl2.0.22&…

力扣第462題 最小操作次數使數組元素相等 II C++ 排序基礎 附Java代碼

題目 462. 最小操作次數使數組元素相等 II 中等 相關標簽 數組 數學 排序 給你一個長度為 n 的整數數組 nums &#xff0c;返回使所有數組元素相等需要的最小操作數。 在一次操作中&#xff0c;你可以使數組中的一個元素加 1 或者減 1 。 示例 1&#xff1a; 輸入&a…

Python深入分享之閉包

閉包(closure)是函數式編程的重要的語法結構。函數式編程是一種編程范式 (而面向過程編程和面向對象編程也都是編程范式)。在面向過程編程中&#xff0c;我們見到過函數(function)&#xff1b;在面向對象編程中&#xff0c;我們見過對象(object)。函數和對象的根本目的是以某種…

substr()與substring()的區別

在 JavaScript 編程語言中&#xff0c;substr() 和 substring() 都是字符串函數&#xff0c;用于截取指定位置的子字符串。雖然這兩個函數都可以用于截取字符串&#xff0c;但它們之間存在一些區別。 substr() 語法&#xff1a;string.substr(start,length) 參數值&#xff1a…

IDEA中 java: 警告: 源發行版 11 需要目標發行版 11 如何解決

步驟1找到項目結構&#xff0c;下面有兩種方式 步驟2找到 模塊中對應的項目&#xff0c;修改對應的源的語言級別和依賴的模塊SDK(M) 步驟3&#xff0c;啟動一下&#xff0c;看有無問題&#xff0c; 步驟4&#xff0c;去文件-->設置-->構建、執行、部署-->編譯器-->…

中職組網絡安全B模塊-滲透提權2

任務五&#xff1a;滲透提權2 任務環境說明&#xff1a; 僅能獲取xxx的IP地址 用戶名&#xff1a;test&#xff0c;密碼&#xff1a;123456 訪問服務器主機&#xff0c;找到主機中管理員名稱&#xff0c;將管理員名稱作為Flag值提交&#xff1b; Flag:doyoudoyoudo 訪問服…

C語言二十三彈---求第N項斐波那契數列的值

C語言求第N項斐波那契數列的值 定義&#xff1a;斐波那契數列指的是這樣一個數列&#xff1a;1&#xff0c;1&#xff0c;2&#xff0c;3&#xff0c;5&#xff0c;8&#xff0c;13&#xff0c;21&#xff0c;34&#xff0c;55&#xff0c;89…自然中的斐波那契數列&#xff0…

感恩三十載 再創新輝煌——中國音樂著作權協會成立30周年暨著作權集體管理制度實施30周年紀念大會在京召開

感恩三十載 再創新輝煌 2023年11月19日&#xff0c;中國音樂著作權協會成立30周年暨著作權集體管理制度實施30周年紀念大會在北京舉行。中宣部副部長張建春&#xff0c;國際作者和作曲者協會聯合會&#xff08;CISAC&#xff09;總干事甘迪奧龍&#xff08;Gadi Oron&#xff0…

深入了解批處理文件:從基礎到實例

1. 什么是批處理文件&#xff1f; 批處理文件是一種包含一系列命令的文本文件&#xff0c;通常用于自動化執行一系列任務。在不同操作系統中&#xff0c;批處理也有不同的名稱&#xff0c;如在Windows中被稱為批處理文件&#xff08;.bat&#xff09;&#xff0c;而在Linux中則…