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

【算法】Two Sum II - Input Array Is Sorted 兩數(shù)之和 II - 輸入有序數(shù)組

這篇具有很好參考價(jià)值的文章主要介紹了【算法】Two Sum II - Input Array Is Sorted 兩數(shù)之和 II - 輸入有序數(shù)組。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

Two Sum II - Input Array Is Sorted 兩數(shù)之和 II - 輸入有序數(shù)組

問題描述:

給你一個(gè)下標(biāo)從 1 開始的整數(shù)數(shù)組 numbers ,該數(shù)組已按 非遞減順序排列 ,請你從數(shù)組中找出滿足相加之和等于目標(biāo)數(shù) target 的兩個(gè)數(shù)。如果設(shè)這兩個(gè)數(shù)分別是 numbers[index1] 和 numbers[index2] ,則 1 <= index1 < index2 <= numbers.length 。

以長度為 2 的整數(shù)數(shù)組 [index1, index2] 的形式返回這兩個(gè)整數(shù)的下標(biāo) index1 和 index2。

你可以假設(shè)每個(gè)輸入 只對應(yīng)唯一的答案 ,而且你 不可以 重復(fù)使用相同的元素。

你所設(shè)計(jì)的解決方案必須只使用常量級的額外空間。

2 < = n u m b e r s . l e n g t h < = 3 ? 1 0 4 ? 1000 < = n u m b e r s [ i ] < = 1000 n u m b e r s 按非遞減順序排列 ? 1000 < = t a r g e t < = 1000 僅存在一個(gè)有效答案 2 <= numbers.length <= 3 * 10^4\\ -1000 <= numbers[i] <= 1000\\ numbers 按 非遞減順序 排列\(zhòng)\ -1000 <= target <= 1000\\ 僅存在一個(gè)有效答案 2<=numbers.length<=3?104?1000<=numbers[i]<=1000numbers按非遞減順序排列?1000<=target<=1000僅存在一個(gè)有效答案

分析

第一個(gè)應(yīng)該想到的就是暴力,時(shí)間復(fù)雜度 O ( N 2 ) O(N^2) O(N2).

暴力雖然時(shí)間復(fù)雜度高,但是絕對可以拿捏,不需要考慮其他特殊情況。

改進(jìn)

因?yàn)樵瓟?shù)組是一個(gè)規(guī)律的有序數(shù)組,所以在找另一個(gè)數(shù)的時(shí)候,就可以二分了。時(shí)間復(fù)雜度 O ( N L o g N ) O(NLogN) O(NLogN).

特點(diǎn):比較快,但是場景有限制,對編碼能力有一定門檻。

再改進(jìn):

雙指針該方法還是基于有序數(shù)組,

  • 從2個(gè)端點(diǎn)開始找,
  • 如果 s u m = = t a r g e t sum==target sum==target,說明找到了一個(gè)合法的pair。
  • 否則 s u m > t a r g e t sum>target sum>target,那就需要把右端點(diǎn)像左移。
  • 如果 s u m < t a r g e t sum<target sum<target,那就需要把左端點(diǎn)向右移。

特點(diǎn):這個(gè)比二分更快,時(shí)間復(fù)雜度 O ( N ) O(N) O(N),也是對場景有限制。

Two Sum 雖然簡單,但是變種太多。如果不是有序的數(shù)組,這個(gè)時(shí)候,就不能直接使用二分和雙指針了。

代碼

二分

class Solution {
    public int[] twoSum(int[] numbers, int target) {
        int n = numbers.length;
        for(int i = 0;i<n; i++){
            int idx = find(numbers,i+1,n-1,target-numbers[i]);
            if(idx!=-1){
                return new int[]{i+1,idx+1};
            }
        }
        return new int[0];
    }

    public int find(int[] arr,int l,int r,int tar){
        int mid = 0;
        while(l<=r){
            mid = l+ (r-l)/2;
            if(arr[mid]== tar) return mid;
            if(arr[mid]>tar) r = mid-1;
            else l = mid+1;
        }        
        return -1;
    }
}

時(shí)間復(fù)雜度 O ( N log ? N ) O(N\log N) O(NlogN)

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

雙指針

class Solution {
    public int[] twoSum(int[] numbers, int target) {
        int l=0,r = numbers.length-1;
        while(l<r){
            int x = numbers[l]+numbers[r];
            if(x== target){
                return new int[]{l+1,r+1};
            }
            if(x>target) r--;
            else l++;
        }
        return new int[0];
    }
}

時(shí)間復(fù)雜度 O ( N ) O(N) O(N)

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

Tag

Array

Two pointer

Binary Search文章來源地址http://www.zghlxwxcb.cn/news/detail-537678.html

到了這里,關(guān)于【算法】Two Sum II - Input Array Is Sorted 兩數(shù)之和 II - 輸入有序數(shù)組的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 167. 兩數(shù)之和 II - 輸入有序數(shù)組

    ? 給你一個(gè)下標(biāo)從? 1 ?開始的整數(shù)數(shù)組? numbers ?,該數(shù)組已按 ? 非遞減順序排列?? ,請你從數(shù)組中找出滿足相加之和等于目標(biāo)數(shù)? target ?的兩個(gè)數(shù)。如果設(shè)這兩個(gè)數(shù)分別是? numbers[index1] ?和? numbers[index2] ?,則? 1 = index1 index2 = numbers.length ?。 以長度為 2 的整數(shù)數(shù)組? [i

    2024年02月16日
    瀏覽(14)
  • [java]兩數(shù)之和 II - 輸入有序數(shù)組

    167. 兩數(shù)之和 II - 輸入有序數(shù)組 – 原題鏈接 題目描述: 給你一個(gè)下標(biāo)從 1 開始的整數(shù)數(shù)組 numbers ,該數(shù)組已按 非遞減順序排列 ,請你從數(shù)組中找出滿足相加之和等于目標(biāo)數(shù) target 的兩個(gè)數(shù)。如果設(shè)這兩個(gè)數(shù)分別是 numbers[index1] 和 numbers[index2] ,則 1 = index1 index2 = numbers.length 。

    2024年02月06日
    瀏覽(14)
  • leetcode167 兩數(shù)之和 II - 輸入有序數(shù)組

    定義兩個(gè)指針分別 l , r l,r l , r 指向數(shù)組的最小和最大元素,即左右邊界,其中 l l l 向右遍歷, r r r 向左遍歷 當(dāng) l , r l,r l , r 指向的兩數(shù)之和等于target,就是我們要的結(jié)果。如果大于target, r ? ? r-- r ? ? ,減小一點(diǎn)。如果小于target, l + + l++ l + + ,增大一點(diǎn) 給你一個(gè)下

    2024年02月19日
    瀏覽(30)
  • 【LeetCode: 167. 兩數(shù)之和 II - 輸入有序數(shù)組 | 雙指針專題 】

    【LeetCode: 167. 兩數(shù)之和 II - 輸入有序數(shù)組 | 雙指針專題 】

    ?? 算法題 ?? ?? 算法刷題專欄 | 面試必備算法 | 面試高頻算法 ?? ?? 越難的東西,越要努力堅(jiān)持,因?yàn)樗哂泻芨叩膬r(jià)值,算法就是這樣? ?? 作者簡介:碩風(fēng)和煒,CSDN-Java領(lǐng)域優(yōu)質(zhì)創(chuàng)作者??,保研|國家獎(jiǎng)學(xué)金|高中學(xué)習(xí)JAVA|大學(xué)完善JAVA開發(fā)技術(shù)棧|面試刷題|面經(jīng)八股文

    2024年02月13日
    瀏覽(53)
  • 算法面試題:Two Sum問題

    問題: 查找數(shù)組中的兩個(gè)數(shù)字,使它們的和等于給定的目標(biāo)值。返回這兩個(gè)數(shù)字的索引。你可以假設(shè)每個(gè)輸入都只有一個(gè)解,而且你不能使用相同的元素兩次。 示例: 解答: 這個(gè)問題是著名的Two Sum問題,它可以通過使用哈希表來解決,時(shí)間復(fù)雜度為O(n),其中n是數(shù)組的長度

    2024年02月07日
    瀏覽(26)
  • [LeetCode - Python]167.兩數(shù)之和 II (Medium);125. 驗(yàn)證回文串(Easy)

    [LeetCode - Python]167.兩數(shù)之和 II (Medium);125. 驗(yàn)證回文串(Easy)

    167.兩數(shù)之和 II (Medium) 125. 驗(yàn)證回文串(Easy) 1.自己第一次寫: 2.看題解

    2024年02月14日
    瀏覽(20)
  • Leetcode每日一題:167. 兩數(shù)之和 II - 輸入有序數(shù)組(2023.7.8 C++)

    Leetcode每日一題:167. 兩數(shù)之和 II - 輸入有序數(shù)組(2023.7.8 C++)

    目錄 167.?兩數(shù)之和 II - 輸入有序數(shù)組 題目描述: 實(shí)現(xiàn)代碼與解析: 暴力(超時(shí)) 雙指針 原理思路: 二分 原理思路: ????????給你一個(gè)下標(biāo)從? 1 ?開始的整數(shù)數(shù)組? numbers ?,該數(shù)組已按 ? 非遞減順序排列?? ,請你從數(shù)組中找出滿足相加之和等于目標(biāo)數(shù)? target ?的兩

    2024年02月13日
    瀏覽(29)
  • 【算法】Add Two Numbers 兩數(shù)相加

    給你兩個(gè) 非空 的鏈表,表示兩個(gè)非負(fù)的整數(shù)。它們每位數(shù)字都是按照 逆序 的方式存儲(chǔ)的,并且每個(gè)節(jié)點(diǎn)只能存儲(chǔ) 一位 數(shù)字。 請你將兩個(gè)數(shù)相加,并以相同形式返回一個(gè)表示和的鏈表。 你可以假設(shè)除了數(shù)字 0 之外,這兩個(gè)數(shù)都不會(huì)以 0 開頭。 每個(gè)鏈表中的節(jié)點(diǎn)數(shù)在范圍

    2024年02月11日
    瀏覽(55)
  • 【算法Hot100系列】兩數(shù)之和

    【算法Hot100系列】兩數(shù)之和

    ??????歡迎來到我的博客,很高興能夠在這里和您見面!希望您在這里可以感受到一份輕松愉快的氛圍,不僅可以獲得有趣的內(nèi)容和知識,也可以暢所欲言、分享您的想法和見解。 推薦:kwan 的首頁,持續(xù)學(xué)習(xí),不斷總結(jié),共同進(jìn)步,活到老學(xué)到老 導(dǎo)航 檀越劍指大廠系列:全面總

    2024年02月05日
    瀏覽(20)
  • 【優(yōu)選算法專欄】專題九:鏈表--------兩數(shù)之和

    【優(yōu)選算法專欄】專題九:鏈表--------兩數(shù)之和

    本專欄內(nèi)容為:算法學(xué)習(xí)專欄,分為優(yōu)選算法專欄,貪心算法專欄,動(dòng)態(tài)規(guī)劃專欄以及遞歸,搜索與回溯算法專欄四部分。 通過本專欄的深入學(xué)習(xí),你可以了解并掌握算法。 ??博主csdn個(gè)人主頁:小小unicorn ?專欄分類:算法從入門到精通 ??代碼倉庫:小小unicorn的代碼倉庫

    2024年02月21日
    瀏覽(27)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包