From 6b3be5c5c1023ff3c09587dd9928f1a71a7686b7 Mon Sep 17 00:00:00 2001 From: hemispherium Date: Thu, 25 Dec 2025 11:34:07 +0900 Subject: [PATCH] add files. --- 0349-intersection-of-two-arrays/memo.md | 13 +++++++++++++ 0349-intersection-of-two-arrays/step1.cpp | 19 +++++++++++++++++++ 0349-intersection-of-two-arrays/step2.cpp | 15 +++++++++++++++ 0349-intersection-of-two-arrays/step3.cpp | 15 +++++++++++++++ 4 files changed, 62 insertions(+) create mode 100644 0349-intersection-of-two-arrays/memo.md create mode 100644 0349-intersection-of-two-arrays/step1.cpp create mode 100644 0349-intersection-of-two-arrays/step2.cpp create mode 100644 0349-intersection-of-two-arrays/step3.cpp diff --git a/0349-intersection-of-two-arrays/memo.md b/0349-intersection-of-two-arrays/memo.md new file mode 100644 index 0000000..91cb5fa --- /dev/null +++ b/0349-intersection-of-two-arrays/memo.md @@ -0,0 +1,13 @@ +### step1 + +nums1とnums2をsetに入れて、制約である0-1000までの値の中で両方のsetに +時間計算量はnums1, nums2の長さをN,MとしてO(NlogN + MlogM + 1000 * (logN + logM))になると思います。 + +### step2 + +step1のコードをGPTにより簡潔で高速なコードに修正してもらいました。 +時間計算量はO(N + M)に改善されると思います。 + +### step3 + +step2のコードを3回通すまで書き直し。 \ No newline at end of file diff --git a/0349-intersection-of-two-arrays/step1.cpp b/0349-intersection-of-two-arrays/step1.cpp new file mode 100644 index 0000000..bcec3df --- /dev/null +++ b/0349-intersection-of-two-arrays/step1.cpp @@ -0,0 +1,19 @@ +class Solution { +public: + vector intersection(vector& nums1, vector& nums2) { + set set1, set2; + for (int num1 : nums1) { + set1.insert(num1); + } + for (int num2 : nums2) { + set2.insert(num2); + } + vector answer; + for (int i = 0; i <= 1000; i++) { + if (set1.contains(i) && set2.contains(i)) { + answer.push_back(i); + } + } + return answer; + } +}; diff --git a/0349-intersection-of-two-arrays/step2.cpp b/0349-intersection-of-two-arrays/step2.cpp new file mode 100644 index 0000000..5d77e83 --- /dev/null +++ b/0349-intersection-of-two-arrays/step2.cpp @@ -0,0 +1,15 @@ +class Solution { +public: + vector intersection(vector& nums1, vector& nums2) { + unordered_set set_of_nums1(nums1.begin(), nums1.end()); + unordered_set answer; + + for (int num2 : nums2) { + if (set_of_nums1.count(num2)) { + answer.insert(num2); + } + } + + return vector(answer.begin(), answer.end()); + } +}; diff --git a/0349-intersection-of-two-arrays/step3.cpp b/0349-intersection-of-two-arrays/step3.cpp new file mode 100644 index 0000000..5d77e83 --- /dev/null +++ b/0349-intersection-of-two-arrays/step3.cpp @@ -0,0 +1,15 @@ +class Solution { +public: + vector intersection(vector& nums1, vector& nums2) { + unordered_set set_of_nums1(nums1.begin(), nums1.end()); + unordered_set answer; + + for (int num2 : nums2) { + if (set_of_nums1.count(num2)) { + answer.insert(num2); + } + } + + return vector(answer.begin(), answer.end()); + } +};