#LeetCode:1. Two Sum

建 Hash 表將所選到之數字 a 所不足的那格 target - a 把自己的 index (i) 紀錄下來,這樣等到該不足之數 target - a 出現的時候可以直接查到與第 i 格湊起來即是答案。

C++(10ms)

/*******************************************************/
/* LeetCode 1. Two Sum                                 */
/* Author: Maplewing [at] knightzone.studio            */
/* Version: 2018/05/23                                 */
/*******************************************************/
class Solution {
public:
  vector<int> twoSum(vector<int>& nums, int target) {
    map<int, int> complementMap;
    for(int i = 0 ; i < nums.size() ; ++i){
      auto complement = complementMap.find(nums[i]);
      if(complement != complementMap.end()){
        int result[] = {complement->second, i};
        return vector<int>(result, result + 2);
      }
      complementMap[target - nums[i]] = i;
    }
  }
};

Kotlin(184ms)

/*******************************************************/
/* LeetCode 1. Two Sum                                 */
/* Author: Maplewing [at] knightzone.studio            */
/* Version: 2019/04/26                                 */
/*******************************************************/
class Solution {
    fun twoSum(nums: IntArray, target: Int): IntArray {
        var complementMap = HashMap<Int, Int>()

        for(i in nums.indices){
            if(complementMap.containsKey(nums[i])){
                return intArrayOf(complementMap[nums[i]]!!, i)
            }

            complementMap[target - nums[i]] = i
        }

        return IntArray(0)
    }
}

回應

目前無留言,歡迎留言!

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料

%d 位部落客按了讚: