From 3d72b858d383218604a043de5178fec3b2d914c8 Mon Sep 17 00:00:00 2001 From: tshimosake <102135053+tshimosake@users.noreply.github.com> Date: Mon, 29 Apr 2024 13:20:32 +0900 Subject: [PATCH] Create subarray-sum-equals-k.md https://github.com/tshimosake/arai60/pull/6/commits --- subarray-sum-equals-k.md | 68 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 subarray-sum-equals-k.md diff --git a/subarray-sum-equals-k.md b/subarray-sum-equals-k.md new file mode 100644 index 0000000..7e5f8c0 --- /dev/null +++ b/subarray-sum-equals-k.md @@ -0,0 +1,68 @@ +自分で書いてTLEしたもの。 + +```py +class Solution: + def subarraySum(self, nums: List[int], k: int) -> int: + res = 0 + for index, num in enumerate(nums): + sum = 0 + j = 0 + while index + j <= len(nums) - 1: + sum += nums[index + j] + j += 1 + if sum == k: + res += 1 + return res +``` + +1回目:解答を見てなんとかアクセプト。 + +```py +from collections import defaultdict +class Solution: + def subarraySum(self, nums: List[int], k: int) -> int: + res = 0 + sum_to_counts = defaultdict(int) + sum_to_counts[0] = 1 + current_sum = 0 + for num in nums: + current_sum += num + if current_sum - k in sum_to_counts: + res += sum_to_counts[current_sum - k] + sum_to_counts[current_sum] += 1 + return res +``` + +2回目:renameとif節の削除。 + +```py +from collections import defaultdict +class Solution: + def subarraySum(self, nums: List[int], k: int) -> int: + res = 0 + current_sum = 0 + sum_count = defaultdict(int) + sum_count[0] = 1 + for num in nums: + current_sum += num + res += sum_count[current_sum - k] + sum_count[current_sum] += 1 + return res +``` + +3回目:current -> cur とrename. + +```py +from collections import defaultdict +class Solution: + def subarraySum(self, nums: List[int], k: int) -> int: + res = 0 + cur_sum = 0 + sum_count = defaultdict(int) + sum_count[0] = 1 + for num in nums: + cur_sum += num + res += sum_count[cur_sum - k] + sum_count[cur_sum] += 1 + return res +```