LeetCode第一題以及時間複雜度的計算,leetcode計算

來源:互聯網
上載者:User

LeetCode第一題以及時間複雜度的計算,leetcode計算

問題描述:給定一組指定整數數組,找出數組中加和等於特定數的兩個數。

     函數(方法)twoSum返回這兩個數的索引,index1必須小於index2。

     另外:你可以假設一個數組只有一組解。

     一個栗子:

        Input: numbers={2, 7, 11, 15}, target=9 Output: index1=1, index2=2

 

演算法實現如下:

 1 /** 2      * 時間複雜度O(n) 3      * @param array 4      * @param target 5      * @return Map<Integer,Integer> 6      */ 7     public static Map<Integer, Integer> twoSum(int[] array, int target) { 8          9         //Map<value,index>10         Map<Integer, Integer> result = new HashMap<Integer, Integer>();11         12         Map<Integer, Integer> container = new HashMap<Integer, Integer>();13         for (int i = 0; i < array.length; i++) {14             if (!container.containsKey(target - array[i])) {15                 container.put(array[i], i + 1);16             } else {17                 result.put(target - array[i], container.get(target - array[i]));18                 result.put(array[i], i + 1);19                 break ;20             }21         }22 23         return result;24     }

另有雙層迴圈判斷的演算法實現,時間複雜度為O(n²),在此就不列出。

 

關於時間複雜度的計算

  一個栗子:
  

1 int value = 0 ;                            //該代碼執行1次2 for(int i = 0 ; i < n ; i++){    3     value += n ;                            //該代碼執行n次4 }

  該演算法執行1+n次,如果n趨近於無窮大,1便可忽略不計,也就是說該演算法執行了n次。時間複雜度常用O符號表示,這個演算法的時間複雜度為O(n)。

 

  當一個演算法的計算時間複雜度時,可以遵循這樣的規則:
    1).去掉已耗用時間中的所有加法常數。
    2).只保留最高階項。
    3).如果最高階項存在且不是1,去掉與這個最高階相乘的常數得到時間複雜度

  再一個栗子
  

1 for (int i = 0; i < n; i++) {2     for (int j = i; j < n; j++) {3         // do something4     }5 }    

 


  當 i = 0 時 裡面的fo迴圈執行了n次,當i等待1時裡面的for迴圈執行了n - 1次,當i 等於2裡裡面的fro執行了n - 2次........所以執行的次數是:
  n + (n-1) + (n-2) + ...+ 1
  = n(n+1)/2
  = n²/2 + n/2


  根據我們上邊的時間複雜度演算法
    1.去掉已耗用時間中的所有加法常數: 沒有加法常數不用考慮
    2.只保留最高階項: 只保留 n²/2
    3. 去掉與這個最高階相乘的常數: 去掉 1/2 只剩下 n²
  最終這個演算法的時間複雜度為O(n²)


 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.