LeetCode 远征日记(1)

两数之和

📖 方法一:两个 for 循环遍历

思路

首先,也是最容易想到的就是利用两个 for 循环遍历所有的取值可能,如果有两个数的和为 目标值 target 就立即返回这两个数的下标。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {
public:
    int i, j;
    vector<int> twoSum(vector<int>& nums, int target) {
        // get the first number
        for (int size = nums.size(), i = 0; i < size - 1; i++) {
            // get the second number
            for (j = i + 1; j < size; j++) {
                if ((nums[i] + nums[j]) == target) {
                    return {i, j};
                }
            }
        }
    return {};
    }
};

收获

  1. 当函数的返回类型是 vector<int> 时,可以使用如下的返回语句:
1
2
3
return {i, j};

return {}; //返回空值

总结

本题是我再次回归后做的第一道题,帮助我复习了一些 C++ 的语法知识。但属实没想到,现在我想个 for 循环遍历的写法就想了半天 😭。

值得高兴的是 😝,我成功打破了 vector 的“魔咒”,在之后的“远征之路”上应该暂时没有语法方面的阻碍了。

就是目前还不太习惯 LeetCode 的编码界面(只有一个类,不好进行 debug 测试),所以我在 VS 中写了一个完整的代码进行测试(还是 VS 看着顺眼 😎)。

此外,我也意识到即使是这种简单的程序也有很多可以优化的地方,比如在算法、内存管理等方面。但这些知识我还需要慢慢积累,目前还是先以解决问题为首要目标,在之后积累的足够了再回头逐步优化自己的代码。

加油吧,你是最棒的!🥳