• 1 两数之和——easy


    1 两数之和——easy

    • 链接:https://leetcode-cn.com/problems/two-sum/

    • 方法1:暴力遍历

      • 思路

        • 遍历每个元素 (x),并查找是否存在一个值与 (target - x) 相等的目标元素
        • 时间复杂度:(O(n^2)) :对于每个元素,都试图通过遍历数组的其余部分来寻找它所对应的目标元素,这将耗费 (O(n)) 的时间。因此时间复杂度为 (O(n^2))
        • 空间复杂度:(O(1))
      • code

      class Solution {
      public:
          vector<int> twoSum(vector<int>& nums, int target) {
              int n = nums.size();
              //i的范围是[0,nums.size()-2],即最后取到的是向量的倒数第二个位置,与j(i+1)——倒数第一个值相加
              for (int i = 0; i < n - 1; ++i) {
                  for (int j = i + 1; j < n; ++j) {
                      if (nums[i] + nums[j] == target) {
                          return vector<int>{i, j};
                      }
                  }
              }
              return {};
          }
      };
      
    • 方法2:hash 表

      • 思路

        • 为了对运行时间复杂度进行优化,需要一种更有效的方法来检查数组中是否存在目标元素。如果存在,需要找出它的索引。保持数组中的每个元素与其索引相互对应的最好方法就是 hash 表。通过以空间换取速度的方式,可以将查找时间从 (O(n)) 降低到 (O(1))
        • 使用两次迭代。在第一次迭代中,将每个元素的值和它的索引添加到 hash 表中。然后,在第二次迭代中,将检查每个元素所对应的目标元素((target - nums[i]))是否存在于表中,同时要使得该目标元素不是 (nums[i])本身
      • 复杂度

        • 时间复杂度:(O(n))。把包含有 (n) 个元素的列表遍历两次。由于哈希表将查找时间缩短到 (O(1)) ,所以时间复杂度为 (O(n))
        • 空间复杂度:(O(n))。所需的额外空间取决于 hash 表中存储的元素数量,即 (n) 个元素
      • code

      class Solution {
      public:
          vector<int> twoSum(vector<int>& nums, int target) {
              unordered_map<int, int> m;
              for (int i = 0; i < nums.size(); ++i) {
                  m[nums[i]] = i;
              }
              for (int i = 0; i < nums.size(); ++i) {
                  if (m.find(target - nums[i]) != m.end() && m[target - nums[i]] != i) {
                      return vector<int>{i, m[target - nums[i]]};
                  }
              }
              return {};
          }
      };
      
  • 相关阅读:
    关于最近
    Cryptography Application Block
    关于修改SQL SERVER 登陆模式
    我与软件工程
    JAVA之路(一)
    C#基础:类的继承与多态
    简述java语言的特点
    简述java虚拟机的工作原理
    阿里云盾特点及防DDoS攻击服务介绍
    智能DNS
  • 原文地址:https://www.cnblogs.com/bky-hbq/p/13134354.html
Copyright © 2020-2023  润新知