原文:給定一個整數sum,從n個有序的元素的數組中尋找a,b,使得a+b的結果最接近sum,最快的時間復雜度?

之前遇到的一道算法題,這里記錄一下。 算法思想:因為是有序的,所以我們用s存放第一個元素的下標,用e存放最后一個元素的下標,那么arr s 就是所有元素中最小的,arr e 就是所有元素中最大的,所以我們判斷arr s arr e sum的值是否大於 ,如果大於 那就說明 arr e 太大了,那么就e 。如果小於 ,arr s 太小了,那就s 。這個時候判斷是否距離比上一個我們記錄的距離更小,更小 ...

2020-09-17 16:31 0 492 推薦指數:

查看詳情

兩個有序數組合並成一個有序數組(要求時間復雜度為O(n))

面試題: 怎樣把兩個有序數組合並成有序數組呢 邏輯步驟: 1.假設兩個數組為A和B 2.A和B都是從小到大的順序進行排列 ** 1.我們可以直接比較兩個數組的首元素,哪個小就把這個小元素放入可變數組。 2.把小元素所在的數組的這個元素刪除。 3.繼續比較兩個數組的首 ...

Tue Mar 12 19:15:00 CST 2019 0 1891
給定一個長度為N數組,找出出現次數大於n/2,n/3的數,要求時間復雜度O(n),空間復雜度O(1)

  先討論出現次數大於n/2的數字,如果這樣的數字存在,那么這個數出現的次數大於其他數出現的次數的總和。 在數組A,我們定義兩個數據集合a1,a2。a1為出現次數大於n/2的數的集合,a2為其余數組成的集合。對於數組 A中元素a、b,假設a不等於b,那么有兩種情況,分別為:a屬於a1,b屬於 ...

Fri Nov 01 04:59:00 CST 2019 0 300
Leetcode練習(Python):數組類:第34題:給定一個按照升序排列的整數數組 nums,和一個目標值 target。找出給定目標值在數組的開始位置和結束位置。 你的算法時間復雜度必須是 O(log n) 級別。 如果數組不存在目標值,返回 [-1, -1]。

題目: 給定一個按照升序排列的整數數組 nums,和一個目標值 target。找出給定目標值在數組的開始位置和結束位置。 你的算法時間復雜度必須是 O(log n) 級別。 如果數組不存在目標值,返回 [-1, -1]。 思路:二分法,使用一個指針來找到數字的開頭和結尾位置 ...

Sat Apr 18 23:01:00 CST 2020 0 1577
[整理] 時間復雜度 (B-Tree樹)

時間復雜度一個函數,它定量描述了該算法的運行時間。 常見的時間復雜度有以下幾種。 1,log(2)nnn log(2)nn的平方,n的三次方,2的n次方,n! 1指的是常數。即,無論算法的輸入n是多大,都不會影響到算法的運行時間。這種是最優的算法。而n!(階乘)是非常差的算法。當n ...

Sat Dec 12 17:20:00 CST 2020 0 1423
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM