diff --git a/codes/typescript/chapter_computational_complexity/leetcode_two_sum.ts b/codes/typescript/chapter_computational_complexity/leetcode_two_sum.ts new file mode 100644 index 00000000..f0aaa17b --- /dev/null +++ b/codes/typescript/chapter_computational_complexity/leetcode_two_sum.ts @@ -0,0 +1,34 @@ +/* + * @Author: gyt95 (gytkwan@gmail.com) + * @Date: 2022-12-15 11:26:38 + * @Last Modified by: gyt95 (gytkwan@gmail.com) + * @Last Modified time: 2022-12-15 11:38:22 + */ + +function twoSumBruteForce(nums: number[], target: number): number[] { + let n = nums.length; + // 两层循环,时间复杂度 O(n^2) + for (let i = 0; i < n; i++) { + for (let j = i + 1; j < n; j++) { + if (nums[i] + nums[j] === target) { + return [i, j] + } + } + } + return []; +}; + +function twoSumHashTable(nums: number[], target: number): number[] { + // 辅助哈希表,空间复杂度 O(n) + let m: Map = new Map() + // 单层循环,时间复杂度 O(n) + for (let i = 0; i < nums.length; i++) { + let index = m.get(nums[i]) + if (index !== undefined) { + return [index, i] + } else { + m.set(target - nums[i], i) + } + } + return []; +}; \ No newline at end of file diff --git a/docs/chapter_computational_complexity/space_time_tradeoff.md b/docs/chapter_computational_complexity/space_time_tradeoff.md index ca54e907..0613c4a0 100644 --- a/docs/chapter_computational_complexity/space_time_tradeoff.md +++ b/docs/chapter_computational_complexity/space_time_tradeoff.md @@ -96,7 +96,18 @@ comments: true === "TypeScript" ```typescript title="leetcode_two_sum.ts" - + function twoSumBruteForce(nums: number[], target: number): number[] { + let n = nums.length; + // 两层循环,时间复杂度 O(n^2) + for (let i = 0; i < n; i++) { + for (let j = i + 1; j < n; j++) { + if (nums[i] + nums[j] === target) { + return [i, j] + } + } + } + return []; + }; ``` === "C" @@ -199,7 +210,20 @@ comments: true === "TypeScript" ```typescript title="leetcode_two_sum.ts" - + function twoSumHashTable(nums: number[], target: number): number[] { + // 辅助哈希表,空间复杂度 O(n) + let m: Map = new Map() + // 单层循环,时间复杂度 O(n) + for (let i = 0; i < nums.length; i++) { + let index = m.get(nums[i]) + if (index !== undefined) { + return [index, i] + } else { + m.set(target - nums[i], i) + } + } + return []; + }; ``` === "C"