力扣熱題100(方便自己復習,自用)

力扣熱題100

1. 兩數之和 - 力扣(LeetCode)

  • 查找兩數之和是不是等于target
  • 也就是我們找到一個數之后,用target將其減掉,再尋找應當對應的元素是什么
  • 每找到一個數,我們就將其放在集合中,因為集合中可以去重,保證我們只遍歷過一次,然后再繼續遍歷數組,將target減去當前的數組中的值,看看已經遍歷過的數組中是不是有該值,有的話就加入返回結果。
  • 沒有的話就將其加入。

思想:用集合存放遍歷過的數值,然后根據當前定位到的數值,判斷自己尋找的數值在集合中是否出現,若出現就返回結果。

class Solution {public int[] twoSum(int[] nums, int target) {int[] res = new int[2];Map<Integer,Integer> map = new HashMap<>();if(nums.length == 0 || nums == null){return res;}for(int i = 0;i < nums.length;i++){int temp = target - nums[i];if(map.containsKey(temp)){res[0] = map.get(temp);res[1] = i;}else{map.put(nums[i],i);}}return res;}
}

49. 字母異位詞分組 - 力扣(LeetCode)

思想:如果可以重組后構成一個單詞,那么可以把字符串先轉換成字符數組,然后對字符數組中的字母進行排序。將排序過后的字符數組轉換成字符串,然后再作為鍵出現。然后把鍵一樣的值添加到該鍵對應的列表當中即可。如果沒有改鍵,那就創建一個新的鏈表,并同時把鍵值對插入進去。

class Solution {public List<List<String>> groupAnagrams(String[] strs) {Map<String,List<String>> map = new HashMap<>();for(String str : strs){char[] array = str.toCharArray();Arrays.sort(array);String key = new String(array);List<String> list = map.getOrDefault(key,new ArrayList<>());list.add(str);map.put(key,list);}return new ArrayList<List<String>>(map.values());}
}

128. 最長連續序列 - 力扣(LeetCode)

思想:遍歷該數組,當遍歷到的元素,在該集合中有前驅的時候就跳過。也就是說,遍歷到的數字必須是該序列中第一個打頭的才進行處理和操作。并且要記錄是當前數字打頭的連續序列更長還是已經記錄的舊的更長。

class Solution {public int longestConsecutive(int[] nums) {Set<Integer> sets = new HashSet<>();for(int num : nums){sets.add(num);}int maxLong = 0;for(int set : sets ){int num = set;if(!sets.contains(num - 1)){int curLong = 1;while(sets.contains(num+1)){num++;curLong++;}maxLong = Math.max(curLong,maxLong);}}return maxLong;}
}

283. 移動零 - 力扣(LeetCode)

思想:使用雙指針法進行求解,左指針先不動,指向已經處理好的序列的尾部,右指針尋找不為零的時候,如果不為零,就和left指向的元素進行交換。到最后,left之前的數組就都是不為零的,且位置沒有被改變。

class Solution {public void moveZeroes(int[] nums) {int left = 0, right = 0,len = nums.length;while(right < len){if(nums[right] != 0){int temp = nums[right];nums[right] = nums[left];nums[left++] = temp;}right++;}}
}

餓了嗎2025.3.21

1.求V字形的數組,也就是連續的三個數字,中間是凹進去的。

package dlut.com.java;import java.util.Scanner;
public class Main{public static void main(String[] args){Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int[] arr = new int[n];int count = 0;for(int i = 0;i < n;i++){arr[i] = scanner.nextInt();}for(int i = 1;i < n-1;i++){if(arr[i]<arr[i-1] && arr[i]<arr[i+1]){count++;}}System.out.println(count);}
}

2.第一個數字n:是字符串的長度,第二個數字g:是相差應該小于等于的,若數組的位置下標奇偶性相同,且滿足相差小于等于g那么就是有緣分的位置對數。

package dlut.com.java;import java.util.Scanner;
public class Main{public static void main(String[] args){Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int g = scanner.nextInt();String s = scanner.next();int[] count1 = new int[26];int[] count2 = new int[26];char[] c = s.toCharArray();for(int i = 0;i < n;i++){if(i%2==0){//記錄中間差幾個元素count1[c[i] - 'a']++;}else{count2[c[i] - 'a']++;}}//count的下標就是和a相差幾個元素for(int i = 0;i<26;i++){if(count1[i] != 0)System.out.println("count1["+i+"]="+count1[i]);}for(int i = 0;i<26;i++){if(count2[i] != 0)System.out.println("count2["+i+"]="+count2[i]);}long sum = 0;for(int i = 0;i < 26;i++){sum += (long)count1[i]*(count1[i]-1)/2;for(int j = i+1;j<26;j++){if(Math.abs(j - i - 1)<=g){sum +=(long) count1[i]*count1[j];}}}for(int i = 0;i < 26;i++){sum += (long)count2[i]*(count2[i]-1)/2;for(int j = i+1;j<26;j++){if(Math.abs(j - i - 1)<=g){sum +=(long) count2[i]*count2[j];}}}System.out.println(sum);}
}

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

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

相關文章

【yolo】yolo訓練報錯,以及解決方案

背景&#xff1a; 剛剛&#xff0c;寫了《【yolo】yolo推理報錯&#xff0c;以及解決方案》&#xff0c;馬上訓練就遇到類似的報錯。 我對我標注的圖像進行了300輪的訓練&#xff0c;但是訓練完300輪后&#xff0c;報錯了。。。 報錯信息 300 epochs completed in 0.085 hou…

vscode/cursor中python運行路徑設置 模塊導入問題

vscode/cursor中python運行路徑設置 ## 文件路徑設置 問題描述 pycharm的項目用cursor運行&#xff0c;出現目錄找不到 后來利用 os.getcwd()&#xff0c;經過打印調試發現是IDE的本身配置問題 pycharm中&#xff0c;os.getcwd()默認打開當前腳本所在目錄 vscode/cursor中…

理解線性動力學中的模態疊加法

線性動力學中的模態疊加方法 模態疊加法是線性動力學中一種有價值的工具&#xff0c;可以有效地確定頻域或時域中的系統響應。對于某些類型的線性動力學分析&#xff0c;有必要使用此方法&#xff0c;因此了解該過程對于獲得準確的結果至關重要。在本博客中&#xff0c;我們將…

報錯 - redis - Unit redis.service could not be found.

報錯&#xff1a; Unit redis.service could not be found.Could not connect to Redis at 127.0.0.1:6379: Connection refused解決方法&#xff1a; 檢查狀態、有必要的話 重新安裝 Linux 上查看狀態 systemctl status redis顯示以下內容&#xff0c;代表正常服務 出現下面…

CMS網站模板定制設計與安全評估

內容概要 現代CMS&#xff08;內容管理系統&#xff09;作為網站建設的核心載體&#xff0c;其模板架構與安全防護體系的協同設計已成為企業數字化轉型的關鍵環節。隨著網絡攻擊向量日益復雜化&#xff0c;基于HTTPS協議的端到端加密部署不僅成為基礎安全配置&#xff0c;更直…

【React】useEffect、useLayoutEffect底層機制

目錄 useEffect不設置依賴設置空數組&#xff0c;無依賴設置多個依賴返回值是一個函數總結useEffect的使用環境useEffect 中發送請求錯誤示例用.then獲取數據在useEffect創建一個函數 總結 useLayoutEffectuseLayoutEffect 和useEffect區別執行時機&#xff1a;瀏覽器渲染的關系…

深度解析學術論文成果評估(Artifact Evaluation):從歷史到現狀

深度解析學術論文成果評估(Artifact Evaluation)&#xff1a;從歷史到現狀 引言 在計算機科學和工程領域的學術研究中&#xff0c;可重復性和可驗證性越來越受到重視。隨著實驗性研究的復雜性不斷增加&#xff0c;確保研究成果可以被其他研究者驗證和構建變得尤為重要。這一需…

VSCode創建VUE項目(四)增加用戶Session管理

將用戶信息存儲或者更新到Session sessionStorage.setItem("userID",loginform.value.username); sessionStorage.setItem(loginTime, Date.now()); 獲取Session信息 const storedUserInfo sessionStorage.getItem(userID); const loginTime sessionStorage.get…

威聯通 后臺可用命令查看Bash

一、查看所有可用命令的方法 列出所有外部命令&#xff08;二進制文件&#xff09; 外部命令通常存放在系統路徑&#xff08;如 /bin, /usr/bin, /sbin, /usr/sbin&#xff09;中&#xff1a; bash ls /bin /usr/bin /sbin /usr/sbin # 直接列出命令目錄&#xff08;結果較長&…

游戲MOD伴隨盜號風險,仿冒網站借“風靈月影”竊密【火絨企業版V2.0】

游戲MOD&#xff08;即游戲修改器&#xff09;是一種能夠對游戲進行修改或增強的程序&#xff0c;因其能夠提升游戲體驗&#xff0c;在玩家群體中擁有一定的市場。然而&#xff0c;這類程序大多由第三方開發者制作&#xff0c;容易缺乏完善的安全保障機制&#xff0c;這就為不法…

Kubernetes Init 容器:實現 Nginx 和 PHP 對 MySQL 的依賴檢查

在設計 Kubernetes Pod 時&#xff0c;如果需要在啟動 Nginx 和 PHP 之前等待 MySQL 啟動完成&#xff0c;可以通過 初始化容器&#xff08;initC&#xff09; 來實現。初始化容器可以用于檢查 MySQL 是否可用&#xff0c;只有在 MySQL 可用后&#xff0c;才會繼續啟動主容器&a…

SSL/TLS 和 SSH 介紹以及他們的區別

目錄 SSL/TLS SSL/TLS工作原理的核心步驟握手階段&#xff08;Handshake Protocol&#xff09;加密通信階段&#xff08;Encrypted Communication Phase&#xff09;會話恢復&#xff08;Session Resumption&#xff09; SSH SSH 加密機制的核心步驟 SSH 和 SSL 區別 SSL/TLS …

QT二 QT使用generate form 生成常用UI,各種UI控件

一 。沒有使用general form 和 使用 general form 后&#xff0c;file層面和代碼層面的不同比較 file層面的不同 代碼層面的不同&#xff0c; 在 使用了general form之后&#xff0c;在主界面的構造方法中&#xff0c;使用ui->setupUi(this),就完成了所有UI的處理。 而之…

Qt中多線程

在Qt中實現多線程主要有兩種常用方式&#xff1a;基于QThread的子類化和QObjectmoveToThread的Worker模式。以下是詳細說明和示例代碼&#xff1a; 1. 傳統方法&#xff1a;繼承 QThread&#xff08;適用于簡單任務&#xff09; #include <QThread> #include <QDebug…

從PGC到AIGC:海螺AI多模態內容生成系統架構一站式剖析

海螺AI&#xff1a;基于多模態架構的下一代認知智能引擎 海螺AI核心模型架構基礎模型&#xff1a;abab-6.5語音模型&#xff1a;speech-01 視頻生成管線關鍵子系統快速接入海螺AI 藍耘MaaS平臺什么是MaaS平臺&#xff1f;支持的大模型藍耘搭載海螺AI的優勢 實戰應用教程如何注冊…

二分查找上下界問題的思考

背景 最近在做力扣hot100中的二分查找題目時&#xff0c;發現很多題目都用到了二分查找的變種問題&#xff0c;即二分查找上下界問題&#xff0c;例如以下題目&#xff1a; 35. 搜索插入位置 74. 搜索二維矩陣 34. 在排序數組中查找元素的第一個和最后一個位置 它們不同于查找…

android adjust 卸載與重裝監測

想要洞察應用內用戶的留存率,可以通過Adjust 的卸載與重裝進行監測 名詞解釋: 卸載:集成完成后,卸載應用,安裝狀態為:卸載 重裝:如果應用已經卸載,但一段時間后又進行安裝,則會被視為重裝。 ??????:adjust 文件中說到24 小時后,可以再 adjust 控制臺看安裝…

算法系列——有監督學習——4.支持向量機

一、概述 支持向量機&#xff08;Support Vector Machine&#xff0c;SVM&#xff09;是一種應用范圍非常廣泛的算法&#xff0c;既可以用于分類&#xff0c;也可以用于回歸。 本文將介紹如何將線性支持向量機應用于二元分類問題&#xff0c;以間隔&#xff08;margin&#x…

【Mani_skill】success判斷的核心調用邏輯

1. 可視化調用流程&#xff08;from Deepseek-r1-Cursor&#xff09; [RL算法調用 env.step()]↓ 調用 env.get_info()↓ 調用 env.evaluate() → 返回包含 success 的字典↓ 將 success 存入 info 字典↓ 在 step() 中處理終止條件&#xff1a; terminated success | fail

【圖像處理基石】什么是HDR圖片?

1. 什么是HDR圖片&#xff1f; HDR&#xff08;高動態范圍圖像&#xff0c;High Dynamic Range&#xff09;是一種通過技術手段擴展照片明暗細節的成像方式。以下是關于HDR的詳細說明&#xff1a; 核心原理 動態范圍&#xff1a;指圖像中最亮和最暗區域之間的亮度差。人眼能…