|
72 | 72 | }, |
73 | 73 | { |
74 | 74 | "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).", |
76 | 76 | "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 | + "}" |
81 | 122 | }, |
82 | | - "problems": ["Subarray Sum Equals K", "Range Sum Query"] |
| 123 | + "problems": ["Subarray Sum Equals K", "Range Sum Query", "Continuous Subarray Sum"] |
83 | 124 | }, |
84 | 125 | { |
85 | 126 | "title": "Backtracking", |
|
0 commit comments