LeetCode 1.

問題描述

倆數之和:
給定一個整數數組 nums 和一個整數目標值 target,請你在該數組中找出 和為目標值 target 的那 兩個 整數,并返回它們的數組下標。你可以假設每種輸入只會對應一個答案,并且你不能使用兩次相同的元素。你可以按任意順序返回答案。
示例 1:
輸入:nums = [2,7,11,15], target = 9
輸出:[0,1]
解釋:因為 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
示例 2:
輸入:nums = [3,2,4], target = 6
輸出:[1,2]
示例 3:
輸入:nums = [3,3], target = 6
輸出:[0,1]

原因分析:

想法一:使用倆次循環遍歷。但是時間復雜度太高O(n^2)

class Solution {public int[] twoSum(int[] nums, int target) {for(int i = 0; i < nums.length;i++){for(int j = i+1; j < nums.length; j++){if(nums[i]+nums[j]==target)return new int[]{i,j};}}}
}
class Solution {public int[] twoSum(int[] nums, int target) {// 外層循環遍歷每個元素(除了最后一個)for (int i = 0; i < nums.length - 1; i++) {// 內層循環遍歷當前元素之后的所有元素for (int j = i + 1; j < nums.length; j++) {// 檢查兩數之和是否等于目標值if (nums[i] + nums[j] == target) {// 找到解,立即返回索引對return new int[]{i, j};}}}// 理論上不會執行到這里(題目保證有解)return new int[0]; // 保證編譯通過}
}

解決方案:

遇到判斷這個元素是否在集合里出現過的時候(哈希表法):里面有倆種結構(數組與Set)做哈希映射

import java.util.HashMap;
class Solution {public int[] twoSum(int[] nums, int target) {// 創建哈希表:鍵=數組元素值(Integer), 值=元素索引(Integer)HashMap<Integer, Integer> map = new HashMap<>(); for (int i = 0; i < nums.length; i++) {// 計算需要的補數(配對值)int complement = target - nums[i];// 檢查補數是否已在哈希表中(使用內置方法)if (map.containsKey(complement)) {// 找到解:返回[補數的索引, 當前索引]return new int[]{map.get(complement), i};}         // 將當前元素存入哈希表(使用內置方法)map.put(nums[i], i);}    // 無解時返回空數組(實際不會執行)return new int[0]; // 創建新的空數組對象}
}
二、Set 與 Map 的關系與區別
1. Map(映射):鍵值對集合

核心特征

  • 存儲鍵值對(Key-Value pairs)
  • 鍵唯一,值可重復
  • 通過鍵快速檢索值
// Java HashMap 示例
Map<String, Integer> map = new HashMap<>();
map.put("apple", 1);  // 插入鍵值對
int count = map.get("apple");  // 通過鍵獲取值
2. Set(集合):唯一元素容器

核心特征

  • 存儲不重復的元素
  • 本質是鍵的集合(值被忽略)
  • 基于 Map 實現(值用固定占位對象)
// Java HashSet 源碼(簡化版)
public class HashSet<E> {private transient HashMap<E, Object> map;private static final Object PRESENT = new Object();    public boolean add(E e) {return map.put(e, PRESENT) == null; // 值固定}
}
使用選擇建議
  • 需存儲關聯數據 → Map
    // 用戶ID到名字的映射
    Map<Integer, String> userNames = new HashMap<>();
    
  • 只需檢查元素存在性 → Set
    // 黑名單ID檢查
    Set<Integer> blacklist = new HashSet<>();
    
三、自動拆箱與裝箱

由包裝類轉成基本類型(如integer與int)在java5之后可以自動轉換。Java 集合框架(如 HashMap)只能存儲對象,所以使用包裝類。
使用包裝類好處:
1.可以為null值
2.有額外的擴展方法

四、為什么要使用泛型

泛型 <K,V> 指定鍵值對的類型 保證類型安全,避免類型轉換

五、為什么要返回一個數組前要加new

new = 拿新盒子:創建數組就像拿新盒子裝東西,空盒子也需要拿(new)

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

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

相關文章

c練習-c基礎

#include <stdio.h>int main() {//打印數組中的最大值int arr[10];int max,i;for (i 0; i < 10; i){scanf_s("%d", &arr[i]);}max arr[0];for (i 0; i < 10; i){if(max < arr[i 1]){max arr[i 1];}}printf("數組中最大值&#xff1a;%…

Numpy科學計算(五分鐘小白從入門到精通)

2.1 numpy介紹numpy是Python中科學計算的基礎包。它是一個Python庫&#xff0c;提供多維數組對象、各種派生對象&#xff08;例如掩碼數組和矩陣&#xff09;以及用于對數組進行快速操作的各種方法&#xff0c;包括數學、邏輯、形狀操作、排序、選擇、I/O 、離散傅里葉變換、基…

從零掌握微服務通信安全:mTLS全解析

&#x1f525;「炎碼工坊」技術彈藥已裝填&#xff01; 點擊關注 → 解鎖工業級干貨【工具實測|項目避坑|源碼燃燒指南】 在云原生時代&#xff0c;微服務架構的普及帶來了靈活性和可擴展性&#xff0c;但也讓服務間通信的安全性成為核心挑戰。mTLS&#xff08;Mutual TLS&…

Node.js net.Socket.destroy()深入解析

socket.destroy() 是 Node.js net 模塊中用于強制銷毀 TCP 套接字的方法&#xff0c;比 socket.end() 更徹底。下面我將從多個方面全面講解這個方法。 基本用法 const net require(net);const server net.createServer((socket) > {// 強制銷毀套接字socket.destroy(); })…

vmware 克隆虛擬機,報錯:克隆時出錯:指定不存在的設備。然后電腦卡死,只能強制關機再開機。

vmware 克隆虛擬機&#xff0c;報錯&#xff1a;克隆時出錯:指定不存在的設備。然后電腦卡死&#xff0c;只能強制關機再開機。1、問題描述2、問題原因3、解決方法1、問題描述 vmware 版本&#xff1a;vmware workstation pro 17.6.3 克隆虛擬機時&#xff0c;創建完整克隆&am…

如何使用Python將任意PPT變為“智能模板”(解決 python-pptx 替換元素無法保留格式的問題,陰影、填充等屬性保留!)

文章目錄 ?? 介紹 ?? ?? 演示環境 ?? ?? 深入 OpenXML:格式保留的終極武器 ?? ?? 如何打造你自己的“格式保留”PPT模板? ?? 為什么格式會丟失? ??? 方案一:圖片的“格式移植”大法 ??? 實現代碼 ?? 原理解析 ?? 方案二:文本的“外科手術”大法…

學習python中離線安裝pip及下載package的方法

正常而言&#xff0c;Python 3.4及以上版本默認自帶pip工具?&#xff0c;無需額外安裝&#xff0c;如果需要單獨離線安裝pip&#xff0c;可以先使用DeepSeek查看指定操作系統能安裝的最高pip版本&#xff0c;然后在參考文獻1中現在指定版本的pip離線安裝文件&#xff0c;通常為…

liunx運維進階腳本

一、文件與目錄操作1.快速創建目錄樹mkdir -p project/{src,doc,test/{unit,integration}}創建嵌套目錄結構&#xff0c;避免逐層創建。2查找并刪除7天前的日志文件find /var/log -name "*.log" -mtime 7 -exec rm -f {} \;結合find和exec實現定時清理。3.批量重命名…

Apache Ignite 中的 SQL 模式(Schema)管理機制

這段內容講的是 Apache Ignite 中的 SQL 模式&#xff08;Schema&#xff09;管理機制。我們可以從幾個方面來理解&#xff1a; 一、什么是 Schema&#xff08;模式&#xff09;&#xff1f; 在 SQL 中&#xff0c;Schema 是數據庫對象&#xff08;如表、視圖等&#xff09;的…

分布式光伏發電多合一(也稱為五合一或者群調群控)終端,從功能、市場前景等等方面介紹

對于當下分布式光伏從業者&#xff0c;多合一終端經常被提及到。而且很多地區也有正常使用&#xff0c;目前來看&#xff0c;使用效果也是比較好的&#xff0c;滿足當下的使用要求。并且價格也是可以接受。下面從幾個方面簡單介紹一下。功能介紹 5G通信功能 設備內置 5G通信模組…

AWE2026啟動:加碼AI科技,雙展區聯動開啟產業新格局

7月22日&#xff0c;由中國家用電器協會主辦的2026年中國家電及消費電子博覽會&#xff08;AWE2026&#xff09;啟動發布會在上海舉行。據「TMT星球」了解&#xff0c;AWE2026將以“AI科技、慧享未來”為主題&#xff0c;首次啟用“一展雙區”的新模式&#xff0c;于2026年3月1…

Django基礎(六)———數據庫

前言上篇文章給大家介紹了DTL模板結構這篇文章將講述Django框架與MySQL數據庫的綜合使用一、Django配置連接數據庫在操作數據庫之前&#xff0c;首先先要連接數據庫&#xff0c;這里我們以配置MySQL為例來講解。Diango連接數據庫&#xff0c;不需要單獨的創建一個連接對象。 只…

postgresql使用記錄 SCRAM authentication requires libpq version 10 or above

文章目錄 背景 如何用命令行連接數據庫 報錯 原因 解決方案 psql常見命令 ?? **核心數據庫操作命令** 1. **查看所有數據庫** 2. **切換數據庫** 3. **查看表及結構** 4. **執行 SQL 文件** 5. **退出 psql** ?? **高級管理命令** ? **注意事項** 背景 由于某種原因,無法…

2.0版本seata、nacos+ruoyi(微服務)配置

一、下載&#xff1a; seata下載&#xff1a;點擊這里 nacos下載&#xff1a;點擊這里 ruoyi&#xff08;微服務&#xff09;下載&#xff1a;點擊這里 Git bash下載&#xff1a;點擊這里 本文所用的版本&#xff1a; seata-2.2.0&#xff08;下圖紅色框框&#xff09;&a…

面試高頻題 力扣 LCR 130.衣柜整理 洪水灌溉(FloodFill) 深度優先遍歷(dfs) 暴力搜索 C++解題思路 每日一題

目錄零、題目描述一、為什么這道題值得一看&#xff1f;二、題目拆解&#xff1a;核心要素與約束三、算法實現&#xff1a;基于 DFS 的解決方案代碼邏輯拆解五、時間復雜度與空間復雜度時間復雜度空間復雜度六、坑點總結七、舉一反三八、洪水灌溉&#xff08;Flood Fill&#x…

Ext4文件系統全景解析

目錄Ext4文件系統全景解析&#xff1a;從inode到數據恢復實戰1. Ext文件系統的"小區規劃"&#xff1a;塊組結構詳解 &#x1f3d8;?1.1 塊組&#xff1a;文件系統的基本管理單元1.2 超級塊的"多重備份"機制 &#x1f6e1;?2. inode&#xff1a;文件的&qu…

貪心算法Day4學習心得

先來看第一道&#xff1a;860. 檸檬水找零 - 力扣&#xff08;LeetCode&#xff09; 有如下三種情況&#xff1a; 情況一&#xff1a;賬單是5&#xff0c;直接收下。情況二&#xff1a;賬單是10&#xff0c;消耗一個5&#xff0c;增加一個10情況三&#xff1a;賬單是20&#…

接口自動化測試種涉及到接口依賴怎么辦?

《接口自動化測試中接口依賴的處理方式及選擇原則》在接口自動化測試中&#xff0c;接口依賴是指某個接口的請求參數、執行條件或測試結果依賴于其他接口的輸出&#xff08;如返回數據、狀態等&#xff09;。處理接口依賴是確保測試用例準確性和穩定性的關鍵&#xff0c;常見的…

hive分區表臨時加載日批數據文件

源系統每日上傳一個csv數據文件到數據中臺指定目錄&#xff0c;數據中臺用hive表進行ETL工作。 先建一個外部分區表&#xff1a; create external table tmp_lease_contract ( contract_id string, vin string, amount float ) partitioned by (dt string) row format delim…

Python關于pandas的基礎知識

一.掃盲&#xff08;一&#xff09;、pandas 是什么pandas 是 Python 的一個第三方數據處理庫&#xff0c;它提供了高效、靈活的數據結構&#xff08;如 Series 和 DataFrame&#xff09;&#xff0c;能方便地對結構化數據進行清洗、轉換、分析和處理。&#xff08;二&#xff…