【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

原创文章 23 获赞 0 访问量 993

猜你喜欢

转载自blog.csdn.net/weixin_42192493/article/details/104672348
今日推荐