LeetCode Array專題

我們工作面試和提高自身數據結構和算法能力的時候往往需要刷刷題,我選擇LeetCode是通過一個留學論壇瞭解的。專業,覆蓋語種全面。

提前說說刷題的心得:

  • 儘量手寫代碼,少使用IDE的代碼補全和智能提示。既然是提升和鍛鍊自己的代碼功底,那就沒有理由再犯沒有IDE寫代碼會死症
  • 讓自己去思考本身就是一件艱難的事,所以如果遇到困難,可以借鑑但切不可抄襲他人思考成果。不然刷題就沒有意義了,別貪多貪快,自己思考的纔是最好的

進入LeetCode官方網站,你會看到醒目的Start coding now,沒有賬號的同學趕快註冊吧,點擊此處可以進入題目分類,接着可以根據自己的實際情況,通過難易程度選擇題目(PS: 帶鎖的需要花錢),我是先易後難,找點信心再說 ��。

選擇題目後就開始刷題之旅吧,官方提供多種語言的支持,可以實時運行檢測代碼,也可以自己設置自定的Testcase,介紹到此,祝各位刷題愉快,學業有成,工作順利~

LeetCode

本來準備所有題目都放在一篇博文,創建專欄後發現不合適,而如果拆分每一個題目爲一篇博文更不現實,想着LeetCode本身就有題目的分類,那麼就按照Tag的形式來進行文章的歸納吧。

Array

1. Two Sum

Tag : Array Hash Table

Given an array of integers, return indices of the two numbers such that they add up to a specific target.

You may assume that each input would have exactly one solution.

譯:給定兩個只有整數的數組,獲取和爲指定數值的兩個數的索引

需要假設每個輸入的值都僅有一個答案

Example:

Given nums = [2, 7, 11, 15], target = 9,

Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].

UPDATE (2016/2/13):
The return format had been changed to zero-based indices. Please read the above updated description carefully.

方式一 暴力實現

public static int[] twoSum(int[] nums, int target) {
  int[] result = new int[2];
  for (int k = 0; k < nums.length; k++) {
    for (int l = k + 1; l < nums.length; l++) {
      if (nums[k] + nums[l] == target) {
        for (int p : nums) {
          if (nums[k] == p) {
            result[0] = k;
          }
          if (nums[l] == p) {
            result[1] = l;
          }
        }
        return result;
      }
    }
  }
  return result;
}

問題分析

從問題來看,由於題目給了限制,也就是說給定的數組中肯定僅有兩個數滿足條件,我使用簡單的冒泡挨個相加判斷是否滿足條件而得到答案。

  • 第一/二層通過嵌套for循環遍歷數組中每個數與其他數之和
  • 取得兩個數後,通過第三個增強for獲取兩個數在元數組中的索引
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章