代碼隨想錄-刷題第六天

242. 有效的字母異位詞

題目鏈接:242. 有效的字母異位詞

思路:哈希法。利用數組來記錄出現的字母個數,然后判斷是否為字母異位詞。

時間復雜度:O(n)

class Solution {public boolean isAnagram(String s, String t) {int[] count = new int[26];for (int i = 0; i < s.length(); i++) {// 并不需要記住字符a的ASCII,只要求出一個相對數值就可以了count[s.charAt(i) - 'a']++;}for (int i = 0; i < t.length(); i++) {count[t.charAt(i) - 'a']--;}for (int i : count) {// record數組如果有的元素不為零0,// 說明字符串s和t一定是誰多了字符或者誰少了字符。if (i != 0) {return false;}}// record數組所有元素都為零0,說明字符串s和t是字母異位詞return true;}
}

349. 兩個數組的交集

題目鏈接:349. 兩個數組的交集

思路:哈希法。利用HashSet集合來判斷元素是否存在,set集合判斷元素是否存在的時間復雜度為O(1)。注意,這里涉及將集合轉換為int數組的操作。

時間復雜度:O(n)

class Solution {public int[] intersection(int[] nums1, int[] nums2) {// 存入set,然后遍歷setSet<Integer> set1 = new HashSet<>();Set<Integer> result = new HashSet<>();for (int num : nums1) {set1.add(num);}for (int num : nums2) {if (set1.contains(num)) {result.add(num);}}// 將結果集合轉為數組// return result.stream().mapToInt(x -> x).toArray();int[] res = new int[result.size()];int i = 0;for(int num : result){res[i] = num;i++;}return res;}
}

202. 快樂數

題目鏈接:202. 快樂數

思路:哈希法加數值各個位上的單數操作,使用HashSet集合來檢測是否循環。

時間復雜度:里面while循環的時間復雜度為O(logn),因為數字的位數由logn決定。

class Solution {public boolean isHappy(int n) {Set<Integer> set = new HashSet<>();int sum = 0;while (n != 1) {// 取數值各個位上的單數平方之和while (n != 0) {sum += Math.pow(n % 10, 2);n = n / 10;}// 如果這個sum曾經出現過,說明已經陷入了無限循環了if (set.contains(sum)) {return false;}set.add(sum);n = sum;sum = 0;}return true;}
}

1. 兩數之和

題目鏈接:1. 兩數之和

思路:哈希法,使用HashMap集合key存放元素value存放下標,遍歷一遍數組,判斷Map集合中是否有符合條件的元素,如果有,返回兩個元素的下標,每次判斷結束要將當前元素值下標存放進Map集合。注意,為了防止當前元素也是符合條件的元素(即兩個當前元素相加為目標值)導致的兩個下標相同,所以要在判斷結束之后再將當前元素和下標放進Map集合。

時間復雜度:O(n)

class Solution {public int[] twoSum(int[] nums, int target) {// 維護 val -> index 的映射HashMap<Integer, Integer> map = new HashMap<>();for (int i = 0; i < nums.length; i++) {// 查表,看看是否有能和 nums[i] 湊出 target 的元素int need = target - nums[i];if (map.containsKey(need)) {return new int[]{map.get(need), i};}// 存入 val -> index 的映射map.put(nums[i], i);}return null;}
}

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

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

相關文章

【云備份】第三方庫的認識與使用

文章目錄 json庫粗略認識詳細認識writer 類reader類jsoncpp序列化實現jsoncpp反序列化實現 bundle文件壓縮庫簡單認識bundle庫實現文件壓縮bundle庫實現文件解壓縮 httplib庫Request類Response類Server類Client類 json庫 粗略認識 json是一種數據交換格式&#xff0c;采用完全…

激光切割設備中模組的作用有哪些?

激光切割設備是一種高精度的自動化加工設備&#xff0c;用于對金屬、非金屬等材料進行精確切割。直線模組作為激光切割設備的重要組成部分&#xff0c;在激光切割設備中起著重要的作用&#xff0c;為設備的運動系統提供了高精度、高穩定性和高效率的運動控制。 1、高精度的位置…

excel單元格加背景顏色不生效?

如果在 Excel 中設置單元格背景顏色而發現不生效&#xff0c;可能有幾個原因。以下是一些常見的解決方法&#xff1a; 1. **單元格鎖定&#xff1a;** 檢查所在單元格是否被鎖定。如果單元格被鎖定&#xff0c;并且工作表被保護&#xff0c;你可能無法更改其背景顏色。在工作表…

mysql 優化器的AST樹是啥

from ChatGPT: MySQL中的優化器&#xff08;optimizer&#xff09;使用AST&#xff08;Abstract Syntax Tree&#xff0c;抽象語法樹&#xff09;來表示查詢的語法結構。AST是一種樹狀結構&#xff0c;它反映了查詢語句的語法層次&#xff0c;是一個抽象表示&#xff0c;用于更…

Linux - 文件系統 - 理解目錄 - 理解 軟/硬鏈接

前言 在上篇博客當中&#xff0c;我們對 文件系統 和 inode 做了初步了解&#xff0c;本博客將在上篇博客的基礎之上&#xff0c;對于 文件系統當中的目錄進行進步一闡述。 Linux - 進一步理解 文件系統 - inode - 機械硬盤-CSDN博客 目錄 一個文件有一個 inode&#xff0c;…

Redis打包事務,分批提交

一、需求背景 接手一個老項目&#xff0c;在項目啟動的時候&#xff0c;需要將xxx省整個省的所有區域數據數據、以及系統字典配置逐條保存在Redis緩存里面&#xff0c;這樣查詢的時候會更快; 區域數據字典數據一共大概20000多條,&#xff0c;前同事直接使用 list.forEach…

Windows安裝MongoDB

1、下載MongoDB的zip&#xff0c;解壓 2、創建目錄 mkdir D:\JavaSoftware\Database\MongoDB\mongodb-win32-x86_64-windows-5.0.8\data\db mkdir D:\JavaSoftware\Database\MongoDB\mongodb-win32-x86_64-windows-5.0.8\data\log 3、創建一個配置文件mongod.cfg&#xff0c…

使用一個接口的結果作為第二個接口的參數并將兩者的數據放置成下拉框的格式

背景 我使用下拉框實現選擇id 但是只有兩個接口 一個是所有的id 另一個是id對應的具體信息 我想把id傳入另一個接口并且獲取其name然后寫成類似這樣的數組 [ { value: 1, label: ‘名稱1’ }&#xff0c; { value: 2, label: ‘名稱2’ } { value: 3, label: ‘名稱3’ } ] 然…

【PPspliT】ppt轉pdf-保留過渡動畫

網址 http://www.maxonthenet.altervista.org/ppsplit.php 下載安裝 使用 再次打開ppt&#xff0c;就能在上方的選項欄里頭看到了&#xff1a;

GEE生物量碳儲量——利用紅和近紅外波段和OTSU大津法提取純凈森林面積

簡介: 如何利用紅和近紅外波段和OTSU大津法提取純凈森林面積?本文的主要邏輯是利用特定時期的遙感影像的波段,提取指定范圍的內的DN值,然后分別統計發生閾值變化的峰值區域,從而作為篩選森林的臨界點,如果研究區較大的話則需要先進行影像分割,分割成為相同大小的區域,…

前端開發Java學習

注釋&#xff1a; 單行注釋 // 多行注釋 /* */ 文件注釋 /** */ 1 關鍵字 &#xff08;關鍵字一定是小寫&#xff09; 2 常量 字符串常量"HelloWord","你好世界"整數常量12&#xff0c;-33小數常量3.14&#xff0c;22.1字符常量A&#xff0c;a &…

不是默認進入Linux|總是自動進入windows系統

問題描述 不是默認進入Linux系統無法主動出現boot引導自動進入windows系統 嘗試無效 修復引導無效重裝Grub無效重裝系統無效 環境 Ubuntu 22.04 LST微星主板 解決方案 修改引導順序&#xff1a; 開機狂按Del鍵&#xff0c;進入BIOS系統&#xff0c;左側Settings 設置&…

src和href的區別

前言 持續學習總結輸出中&#xff0c;src和href都是HTML中特定元素的屬性&#xff0c;都可以用來引入外部的資源。兩者區別如下&#xff1a; 1、作用 href 用于在當前文檔和引用資源之間確立聯系。 src 用于替換當前內容。 2、范圍用途 src&#xff08;source&#xff09…

RabbitMQ基礎教程

1.什么是消息隊列 消息隊列&#xff08;Message Queue&#xff09;&#xff0c;我們一般簡稱為MQ。消息隊列中間件是分布式系統中重要的組件&#xff0c;具有異步性、松耦合、分布式、可靠性等特點。用于實現高性能、高可用、可伸縮和最終一致性架構。是大型分布式系統不可缺少…

Angular11 MSAL B2C登錄實例 (一)

前言 因為項目需求&#xff0c;需要把Angular 11項目中登錄方式改成B2C登錄&#xff0c;所以在參考了一系列文檔后&#xff0c;成功通過MSAL將項目的登錄方式改成B2C登錄。下面介紹了詳細步驟及一些注意事項。 步驟&#xff1a; 1. 安裝MSAL 在項目中安裝msal npm i azure/…

BUUCTF [WUSTCTF2020]find_me 1

BUUCTF:https://buuoj.cn/challenges 題目描述&#xff1a; 得到的 flag 請包上 flag{} 提交。 感謝 Iven Huang 師傅供題。 比賽平臺&#xff1a;https://ctfgame.w-ais.cn/ 密文&#xff1a; 下載附件&#xff0c;得到一個.jpg圖片。 解題思路&#xff1a; 1、得到一張圖…

vue中頁面(路由)跳轉及傳值的幾種方式 router-link + query + params

vue中頁面(路由)跳轉及傳值的幾種方式 知道query 和 params 是什么 參考文案:https://www.php.cn/js-tutorial-382859.html 跳轉的幾種方式與傳值 1、router-link 1.1 根據路由路徑(無參數與有參數) <router-link to = "/page">跳轉到page頁面</…

Java WebSocket 客戶端接收大量數據

介紹 WebSocket 是一種基于 TCP 協議的全雙工通信協議&#xff0c;它能夠在客戶端和服務器之間建立一個持久連接&#xff0c;實現實時的雙向數據傳輸。在實際應用中&#xff0c;有時候我們需要處理大量的數據&#xff0c;例如實時監控系統或者實時股票行情等。本文將介紹如何使…

Matlab三角剖分插值問題分析

目錄 前言 一、問題引入 二、一個例子 1.生成散點圖 2.對數據進行剖分 3.點法式分析 三、最后結果 前言 上一篇文章感覺對三角剖分問題沒有說清楚&#xff0c;這次專門對三角剖分問題再仔細說說。 一、問題引入 實際上這個問題是用來解決二維曲面插值問題的。 二維插值問題&…