当前位置:   article > 正文

Leetcode1. 两数之和 -hot100-代码随想录_hot100和代码随想录

hot100和代码随想录

题目:


代码(首刷看解析 2024年1月15日):

  1. class Solution {
  2. public:
  3. vector<int> twoSum(vector<int>& nums, int target) {
  4. int another = 0;
  5. unordered_map<int,int> hash;
  6. for(int i = 0; i < nums.size(); ++i) {
  7. another = target - nums[i];
  8. if(hash.find(another) != hash.end()) return {i,hash[another]};
  9. else hash.emplace(nums[i],i);
  10. }
  11. return {0,0};
  12. }
  13. };

        一开始做的时候把所有的数先存进hash表里再去找,结果这种情况无法满足重复key值,用multimap又无法检索键对应的值,最后看了代码随想录里的思路发现在遍历过程中插入即可。


代码(二刷自解 2024年3月2日 7min)

        开始hot一百刷题之旅

  1. class Solution {
  2. public:
  3. // 哈希
  4. vector<int> twoSum(vector<int>& nums, int target) {
  5. // 条件判断
  6. if (nums.size() < 2) return vector<int>{0, 1};
  7. // hash存储 value:index
  8. unordered_map<int, int> hash;
  9. // 遍历取哈希
  10. for (int i = 0; i < nums.size(); ++i) {
  11. if (hash.find(target - nums[i]) != hash.end()) {
  12. return vector<int>{i, hash[target - nums[i]]};
  13. } else {
  14. hash.insert(pair<int,int>(nums[i], i));
  15. }
  16. }
  17. return vector<int>{0, 1};
  18. }
  19. };

代码(三刷自解,2024年4月23日 bugfree)

  1. class Solution {
  2. public:
  3. vector<int> twoSum(vector<int>& nums, int target) {
  4. // hash存下标,每次遍历的时候往里面存
  5. unordered_map<int, int> value_to_index;
  6. for (int i = 0; i < nums.size(); i++) {
  7. // 先检测是否存在
  8. if (value_to_index.find(target - nums[i]) != value_to_index.end()) {
  9. return {value_to_index[target - nums[i]], i};
  10. } else {
  11. value_to_index[nums[i]] = i;
  12. }
  13. }
  14. return {-1,-1};
  15. }
  16. };

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/598592
推荐阅读
相关标签
  

闽ICP备14008679号