Skip to content

Commit daefa7c

Browse files
authored
Enhance Prefix Sum pattern description and examples
Updated the description of the Prefix Sum pattern for clarity and added examples for different programming languages. Also, added a new problem to the list of related problems.
1 parent ad21cfa commit daefa7c

File tree

1 file changed

+47
-6
lines changed

1 file changed

+47
-6
lines changed

src/data/patterns.json

Lines changed: 47 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -72,14 +72,55 @@
7272
},
7373
{
7474
"title": "Prefix Sum",
75-
"description": "Used for range sum, subarrays with given sum.",
75+
"description": "Used for fast range sum queries and subarray sum problems. There are two common implementations: (1) with an extra 0 at the start, and (2) without it (0-based).",
7676
"templates": {
77-
"python": "prefix = [0] * (len(arr) + 1)\nfor i in range(len(arr)):\n prefix[i + 1] = prefix[i] + arr[i]",
78-
"javascript": "const prefix = new Array(arr.length + 1).fill(0);\nfor (let i = 0; i < arr.length; i++) {\n prefix[i + 1] = prefix[i] + arr[i];\n}",
79-
"java": "int[] prefix = new int[arr.length + 1];\nfor (int i = 0; i < arr.length; i++) {\n prefix[i + 1] = prefix[i] + arr[i];\n}",
80-
"go": "prefix := make([]int, len(arr)+1)\nfor i := 0; i < len(arr); i++ {\n prefix[i+1] = prefix[i] + arr[i]\n}"
77+
"python": "# Version 1: With extra 0 at the start (simpler range queries)\n" +
78+
"prefix = [0] * (len(arr) + 1)\n" +
79+
"for i in range(len(arr)):\n" +
80+
" prefix[i + 1] = prefix[i] + arr[i]\n\n" +
81+
"# Version 2: Without extra 0 (0-based indexing)\n" +
82+
"prefix = [0] * len(arr)\n" +
83+
"prefix[0] = arr[0]\n" +
84+
"for i in range(1, len(arr)):\n" +
85+
" prefix[i] = prefix[i - 1] + arr[i]",
86+
87+
"javascript": "// Version 1: With extra 0 at the start (simpler range queries)\n" +
88+
"const prefix = new Array(arr.length + 1).fill(0);\n" +
89+
"for (let i = 0; i < arr.length; i++) {\n" +
90+
" prefix[i + 1] = prefix[i] + arr[i];\n" +
91+
"}\n\n" +
92+
"// Version 2: Without extra 0 (0-based indexing)\n" +
93+
"const prefix2 = new Array(arr.length).fill(0);\n" +
94+
"prefix2[0] = arr[0];\n" +
95+
"for (let i = 1; i < arr.length; i++) {\n" +
96+
" prefix2[i] = prefix2[i - 1] + arr[i];\n" +
97+
"}",
98+
99+
"java": "// Version 1: With extra 0 at the start (simpler range queries)\n" +
100+
"int[] prefix = new int[arr.length + 1];\n" +
101+
"for (int i = 0; i < arr.length; i++) {\n" +
102+
" prefix[i + 1] = prefix[i] + arr[i];\n" +
103+
"}\n\n" +
104+
"// Version 2: Without extra 0 (0-based indexing)\n" +
105+
"int[] prefix2 = new int[arr.length];\n" +
106+
"prefix2[0] = arr[0];\n" +
107+
"for (int i = 1; i < arr.length; i++) {\n" +
108+
" prefix2[i] = prefix2[i - 1] + arr[i];\n" +
109+
"}",
110+
111+
"go": "// Version 1: With extra 0 at the start (simpler range queries)\n" +
112+
"prefix := make([]int, len(arr)+1)\n" +
113+
"for i := 0; i < len(arr); i++ {\n" +
114+
" prefix[i+1] = prefix[i] + arr[i]\n" +
115+
"}\n\n" +
116+
"// Version 2: Without extra 0 (0-based indexing)\n" +
117+
"prefix2 := make([]int, len(arr))\n" +
118+
"prefix2[0] = arr[0]\n" +
119+
"for i := 1; i < len(arr); i++ {\n" +
120+
" prefix2[i] = prefix2[i-1] + arr[i]\n" +
121+
"}"
81122
},
82-
"problems": ["Subarray Sum Equals K", "Range Sum Query"]
123+
"problems": ["Subarray Sum Equals K", "Range Sum Query", "Continuous Subarray Sum"]
83124
},
84125
{
85126
"title": "Backtracking",

0 commit comments

Comments
 (0)