【LeetCode刷題記錄】1. 兩數之和

題目描述:在這裏插入圖片描述
題解:
一、暴力破解

vector<int> twoSumBF(vector<int>& nums, int target) { //brute force
 for (int i = 0; i < nums.size(); i++) {
  int complement = target - nums[i];
  for (int j = 0; j < nums.size(); j++) {
   if ((complement == nums[j]) && (i != j)) {
    return vector<int>{i, j};
   }
  }
 }
 return vector<int>{-1};
}

二、哈希表查找

vector<int> twoSumHash(vector<int>& nums, int target) {
 unordered_map<int, int> record;
 for (int i = 0; i < nums.size(); i++) {
  int complement = target - nums[i];
  if (record.find(complement) != record.end()) {
   int res[] = { i, record[complement] };
   return vector<int>{res, res + 2};
  }
  record[nums[i]] = i;
 }
 return vector<int>{-1};
}

關於哈希表,參考:C++: map/hash_map/unordered_map

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章