shiki0331’s blog

Web Developer. TypeScript / React.js を中心に学んでいます。 ブログ内容で間違っている箇所などありましたら、ご指摘していただけると助かります。

C++でLeetCodeの「Two Sum」問題を解く

## Problem
https://leetcode.com/problems/two-sum/description/?envType=featured-list&envId=top-interview-questions

## Answer (Brute Force)
```
class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        for (int i = 0; i < nums.size() - 1; i++) {
            for (int j = i + 1; j < nums.size(); j++) {
                if (nums[i] + nums[j] == target) {
                    return {i, j};
                } 
            }
        }

        return {};
    }
};
```

この問題を解決するためには、nums配列の各要素の組を合計する必要があります。

例えば
nums = [1, 2, 3, 4]
target=5

1 + 2 = 3;
2 + 3 = 5;
3 + 4 = 7;

2重のforループを使用する必要があります。
最初のループは、nums配列の最後から2番目の要素まで繰り返し処理します。これは、2つの要素を合計する必要があるため、最後の要素は最初のループに含める必要がないためです。
2回目のループは、同じ組み合わせを2回繰り返さないように、i + 1の位置から開始します。

最後に、この2つの要素の和がtarget引数に等しい場合に、2つの要素のインデックスをvector<int>の形で返します。

 

return {i, j}という文では、{i, j}がiとjの要素を含むvector<int>を作成します。