国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

LeetCode 1. Two Sum 兩數(shù)之和

這篇具有很好參考價(jià)值的文章主要介紹了LeetCode 1. Two Sum 兩數(shù)之和。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

題目描述

給定一個(gè)整數(shù)數(shù)組 nums?和一個(gè)目標(biāo)值 target,請(qǐng)你在該數(shù)組中找出和為目標(biāo)值的那?兩個(gè)?整數(shù),并返回他們的數(shù)組下標(biāo)。

你可以假設(shè)每種輸入只會(huì)對(duì)應(yīng)一個(gè)答案。但是,數(shù)組中同一個(gè)元素不能使用兩遍。

示例:

給定 nums = [2, 7, 11, 15], target = 9

因?yàn)?nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

題目分析

暴力搜索的方法是遍歷所有的兩個(gè)數(shù)字的組合,然后算其和,這樣雖然節(jié)省了空間,但是時(shí)間復(fù)雜度高。

一般來說,為了提高時(shí)間的復(fù)雜度,需要用空間來換,這算是一個(gè) trade off 吧,但這里只想用線性的時(shí)間復(fù)雜度來解決問題,就是說只能遍歷一個(gè)數(shù)字,那么另一個(gè)數(shù)字呢,可以事先將其存儲(chǔ)起來,使用一個(gè) HashMap,來建立數(shù)字和其坐標(biāo)位置之間的映射。

由于 HashMap 是常數(shù)級(jí)的查找效率,這樣在遍歷數(shù)組的時(shí)候,用 target 減去遍歷到的數(shù)字,就是另一個(gè)需要的數(shù)字了,直接在 HashMap 中查找其是否存在即可。

暴力求解

暴力法很簡單,遍歷每個(gè)元素 xx,并查找是否存在一個(gè)值與 target - xtarget?x 相等的目標(biāo)元素。

public int[] twoSum(int[] nums, int target) {

         //注意判空
         if(nums==null || nums.length==0){
             return null;
         }

        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};
                }
            }
        }

        return null;

    }

復(fù)雜度分析:

時(shí)間復(fù)雜度:O(n^2)

對(duì)于每個(gè)元素,我們?cè)噲D通過遍歷數(shù)組的其余部分來尋找它所對(duì)應(yīng)的目標(biāo)元素,這將耗費(fèi) O(n)O(n) 的時(shí)間。因此時(shí)間復(fù)雜度為 O(n^2)。

空間復(fù)雜度:O(1)。

哈希表兩次遍歷

注意要判斷查找到的數(shù)字不是第一個(gè)數(shù)字,比如 target 是4,遍歷到了一個(gè)2,那么另外一個(gè)2不能是之前那個(gè)2,整個(gè)實(shí)現(xiàn)步驟為:先遍歷一遍數(shù)組,建立 HashMap 映射,然后再遍歷一遍,開始查找,找到則記錄 index。

哈希表中對(duì)應(yīng)的存儲(chǔ),key是元素,value是其下標(biāo),這樣在二次遍歷時(shí)可以通過對(duì)比下標(biāo)排除同一個(gè)元素。

 public int[] twoSum(int[] nums, int target) {
         if(nums==null || nums.length==0){
             return null;
         }

        HashMap<Integer,Integer> map=new HashMap();
        for(int i=0;i<nums.length;i++){
            map.put(nums[i],i);
        }
        
        //兩次遍歷
        for(int i=0;i<nums.length;i++){
            int sub=target-nums[i];
            if(map.containsKey(sub) && map.get(sub)!=i){
                return new int[]{i,map.get(sub)};
            }
        }
        return null;
    }

哈希表一次遍歷

這種方式不需要考慮額外的重復(fù)判重。文章來源地址http://www.zghlxwxcb.cn/news/detail-424811.html

class Solution {
    public int[] twoSum(int[] nums, int target) {
        Map<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i < nums.length; i++) {
        //注意是target作為減數(shù)
            int diff = target - nums[i];
            if (map.containsKey(diff)) {
                return new int[] { map.get(diff), i };
            }
            map.put(nums[i], i);
        }
        throw new IllegalArgumentException("No two sum solution");
    }
}

到了這里,關(guān)于LeetCode 1. Two Sum 兩數(shù)之和的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【LeetCode】每日一題&&兩數(shù)之和&&尋找正序數(shù)組的中位數(shù)&&找出字符串中第一個(gè)匹配項(xiàng)的下標(biāo)&&在排序數(shù)組中查找元素的第一個(gè)和最后一個(gè)位置

    【LeetCode】每日一題&&兩數(shù)之和&&尋找正序數(shù)組的中位數(shù)&&找出字符串中第一個(gè)匹配項(xiàng)的下標(biāo)&&在排序數(shù)組中查找元素的第一個(gè)和最后一個(gè)位置

    ========================================================================= 主頁點(diǎn)擊直達(dá): 個(gè)人主頁 我的小倉庫: 代碼倉庫 C語言偷著笑: C語言專欄 數(shù)據(jù)結(jié)構(gòu)挨打小記: 初階數(shù)據(jù)結(jié)構(gòu)專欄 Linux被操作記: Linux專欄 LeetCode刷題掉發(fā)記: LeetCode刷題 算法: 算法專欄? C++頭疼記: C++專欄 計(jì)算機(jī)

    2024年02月08日
    瀏覽(37)
  • LeetCode兩數(shù)之和

    給定一個(gè)整數(shù)數(shù)組 nums 和一個(gè)整數(shù)目標(biāo)值 target,請(qǐng)你在該數(shù)組中找出 和為目標(biāo)值 target 的那 兩個(gè) 整數(shù),并返回它們的數(shù)組下標(biāo)。 你可以假設(shè)每種輸入只會(huì)對(duì)應(yīng)一個(gè)答案。但是,數(shù)組中同一個(gè)元素在答案里不能重復(fù)出現(xiàn)。 你可以按任意順序返回答案。 示例 1: 輸入:nums =

    2024年02月11日
    瀏覽(18)
  • leetcode - 01兩數(shù)之和

    時(shí)間復(fù)雜度讀 O ( n 2 ) O(n^2) O ( n 2 ) 空間復(fù)雜度 O ( 1 ) O(1) O ( 1 )

    2024年02月12日
    瀏覽(26)
  • Leetcode 1.兩數(shù)之和

    暴力、哈希 題目描述 給定一個(gè)整數(shù)數(shù)組? nums ?和一個(gè)整數(shù)目標(biāo)值? target ,請(qǐng)你在該數(shù)組中找出? 和為目標(biāo)值? target ? 的那? 兩個(gè) ?整數(shù),并返回它們的數(shù)組下標(biāo)。 你可以假設(shè)每種輸入只會(huì)對(duì)應(yīng)一個(gè)答案。但是,數(shù)組中同一個(gè)元素在答案里不能重復(fù)出現(xiàn)。 你可以按任意順序

    2024年04月10日
    瀏覽(28)
  • leetcode 1兩數(shù)之和

    給定一個(gè)整數(shù)數(shù)組 nums 和一個(gè)整數(shù)目標(biāo)值 target,請(qǐng)你在該數(shù)組中找出 和為目標(biāo)值 target 的那 兩個(gè) 整數(shù),并返回它們的數(shù)組下標(biāo)。 你可以假設(shè)每種輸入只會(huì)對(duì)應(yīng)一個(gè)答案。但是,數(shù)組中同一個(gè)元素在答案里不能重復(fù)出現(xiàn)。 你可以按任意順序返回答案。 示例 1: 輸入:nums =

    2024年02月01日
    瀏覽(18)
  • [LeetCode] 1.兩數(shù)之和

    給定一個(gè)整數(shù)數(shù)組 nums 和一個(gè)目標(biāo)值 target ,請(qǐng)你在該數(shù)組中找出和為目標(biāo)值 target 的那兩個(gè)整數(shù),并返回他們的數(shù)組下標(biāo)。 你可以假設(shè)每種輸入只會(huì)對(duì)應(yīng)一個(gè)答案。但是,數(shù)組中同一個(gè)元素不能使用兩遍。 你可以按任意順序返回答案。 示例 1: 示例 2: 示例 3: 提示: 2 =

    2024年02月05日
    瀏覽(17)
  • leetcode刷題:兩數(shù)之和

    面試造火箭,工作擰螺絲,話雖如此,背背八股文,刷刷算法題,也可以提高自己的編程素養(yǎng),一切目的是為了上岸,在此就不咬文嚼字,追求茴香豆的茴有幾種寫法了,換句話說,就是不考慮時(shí)間或者空間復(fù)雜度,直接采用最容易想到的常規(guī)手段。 題目 給定一個(gè)整數(shù)數(shù)組

    2024年04月28日
    瀏覽(19)
  • leetcode--1--兩數(shù)之和

    ????????給定一個(gè)整數(shù)數(shù)組? nums ?和一個(gè)整數(shù)目標(biāo)值? target ,請(qǐng)你在該數(shù)組中找出? 和為目標(biāo)值? target ? 的那? 兩個(gè) ?整數(shù),并返回它們的數(shù)組下標(biāo)。你可以假設(shè)每種輸入只會(huì)對(duì)應(yīng)一個(gè)答案。但是,數(shù)組中同一個(gè)元素在答案里不能重復(fù)出現(xiàn)。你可以按任意順序返回答案。

    2024年04月25日
    瀏覽(19)
  • leetcode1.兩數(shù)之和

    leetcode1.兩數(shù)之和

    個(gè)人主頁:平行線也會(huì)相交 歡迎 點(diǎn)贊?? 收藏? 留言? 加關(guān)注??本文由 平行線也會(huì)相交 原創(chuàng) 收錄于專欄【LeetCode】 ??希望我們一起努力、成長,共同進(jìn)步。 題目鏈接 給定一個(gè)整數(shù)數(shù)組 nums 和一個(gè)整數(shù)目標(biāo)值 target,請(qǐng)你在該數(shù)組中找出 和為目標(biāo)值 target 的那 兩個(gè) 整數(shù),

    2024年02月11日
    瀏覽(18)
  • leetcode熱題100.兩數(shù)之和

    給定一個(gè)整數(shù)數(shù)組 nums 和一個(gè)整數(shù)目標(biāo)值 target,請(qǐng)你在該數(shù)組中找出 和為目標(biāo)值 target 的那 兩個(gè) 整數(shù),并返回它們的數(shù)組下標(biāo)。 你可以假設(shè)每種輸入只會(huì)對(duì)應(yīng)一個(gè)答案。但是,數(shù)組中同一個(gè)元素在答案里不能重復(fù)出現(xiàn)。 你可以按任意順序返回答案。 示例 1: 輸入:nums =

    2024年01月16日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包