Skip to content

Commit 0085946

Browse files
committed
feat: add solutions to lc problem: No.1995
No.1995.Count Special Quadruplets
1 parent 4566878 commit 0085946

File tree

6 files changed

+489
-0
lines changed

6 files changed

+489
-0
lines changed

Diff for: solution/1900-1999/1995.Count Special Quadruplets/README.md

+212
Original file line numberDiff line numberDiff line change
@@ -53,22 +53,234 @@
5353

5454
<!-- 这里可写通用的实现逻辑 -->
5555

56+
直接暴力枚举,或者用哈希表实现。
57+
5658
<!-- tabs:start -->
5759

5860
### **Python3**
5961

6062
<!-- 这里可写当前语言的特殊实现逻辑 -->
6163

6264
```python
65+
class Solution:
66+
def countQuadruplets(self, nums: List[int]) -> int:
67+
ans, n = 0, len(nums)
68+
for a in range(n - 3):
69+
for b in range(a + 1, n - 2):
70+
for c in range(b + 1, n - 1):
71+
for d in range(c + 1, n):
72+
if nums[a] + nums[b] + nums[c] == nums[d]:
73+
ans += 1
74+
return ans
75+
```
6376

77+
```python
78+
class Solution:
79+
def countQuadruplets(self, nums: List[int]) -> int:
80+
ans, n = 0, len(nums)
81+
counter = Counter()
82+
for c in range(n - 2, 1, -1):
83+
counter[nums[c + 1]] += 1
84+
for a in range(c - 1):
85+
for b in range(a + 1, c):
86+
ans += counter[nums[a] + nums[b] + nums[c]]
87+
return ans
88+
```
89+
90+
```python
91+
class Solution:
92+
def countQuadruplets(self, nums: List[int]) -> int:
93+
ans, n = 0, len(nums)
94+
counter = Counter()
95+
for b in range(n - 3, 0, -1):
96+
c = b + 1
97+
for d in range(c + 1, n):
98+
counter[nums[d] - nums[c]] += 1
99+
for a in range(b):
100+
ans += counter[nums[a] + nums[b]]
101+
return ans
64102
```
65103

66104
### **Java**
67105

68106
<!-- 这里可写当前语言的特殊实现逻辑 -->
69107

70108
```java
109+
class Solution {
110+
public int countQuadruplets(int[] nums) {
111+
int ans = 0, n = nums.length;
112+
for (int a = 0; a < n - 3; ++a) {
113+
for (int b = a + 1; b < n - 2; ++b) {
114+
for (int c = b + 1; c < n - 1; ++c) {
115+
for (int d = c + 1; d < n; ++d) {
116+
if (nums[a] + nums[b] + nums[c] == nums[d]) {
117+
++ans;
118+
}
119+
}
120+
}
121+
}
122+
}
123+
return ans;
124+
}
125+
}
126+
```
127+
128+
```java
129+
class Solution {
130+
public int countQuadruplets(int[] nums) {
131+
int ans = 0, n = nums.length;
132+
int[] counter = new int[310];
133+
for (int c = n - 2; c > 1; --c) {
134+
++counter[nums[c + 1]];
135+
for (int a = 0; a < c - 1; ++a) {
136+
for (int b = a + 1; b < c; ++b) {
137+
ans += counter[nums[a] + nums[b] + nums[c]];
138+
}
139+
}
140+
}
141+
return ans;
142+
}
143+
}
144+
```
145+
146+
```java
147+
class Solution {
148+
public int countQuadruplets(int[] nums) {
149+
int ans = 0, n = nums.length;
150+
int[] counter = new int[310];
151+
for (int b = n - 3; b > 0; --b) {
152+
int c = b + 1;
153+
for (int d = c + 1; d < n; ++d) {
154+
if (nums[d] - nums[c] >= 0) {
155+
++counter[nums[d] - nums[c]];
156+
}
157+
}
158+
for (int a = 0; a < b; ++a) {
159+
ans += counter[nums[a] + nums[b]];
160+
}
161+
}
162+
return ans;
163+
}
164+
}
165+
```
166+
167+
### **C++**
168+
169+
```cpp
170+
class Solution {
171+
public:
172+
int countQuadruplets(vector<int>& nums) {
173+
int ans = 0, n = nums.size();
174+
for (int a = 0; a < n - 3; ++a)
175+
for (int b = a + 1; b < n - 2; ++b)
176+
for (int c = b + 1; c < n - 1; ++c)
177+
for (int d = c + 1; d < n; ++d)
178+
if (nums[a] + nums[b] + nums[c] == nums[d]) ++ans;
179+
return ans;
180+
}
181+
};
182+
```
183+
184+
```cpp
185+
class Solution {
186+
public:
187+
int countQuadruplets(vector<int>& nums) {
188+
int ans = 0, n = nums.size();
189+
vector<int> counter(310);
190+
for (int c = n - 2; c > 1; --c)
191+
{
192+
++counter[nums[c + 1]];
193+
for (int a = 0; a < c - 1; ++a)
194+
{
195+
for (int b = a + 1; b < c; ++b)
196+
{
197+
ans += counter[nums[a] + nums[b] + nums[c]];
198+
}
199+
}
200+
}
201+
return ans;
202+
}
203+
};
204+
```
205+
206+
```cpp
207+
class Solution {
208+
public:
209+
int countQuadruplets(vector<int>& nums) {
210+
int ans = 0, n = nums.size();
211+
vector<int> counter(310);
212+
for (int b = n - 3; b > 0; --b)
213+
{
214+
int c = b + 1;
215+
for (int d = c + 1; d < n; ++d)
216+
{
217+
if (nums[d] - nums[c] >= 0)
218+
{
219+
++counter[nums[d] - nums[c]];
220+
}
221+
}
222+
for (int a = 0; a < b; ++a) {
223+
ans += counter[nums[a] + nums[b]];
224+
}
225+
}
226+
return ans;
227+
}
228+
};
229+
```
230+
231+
### **Go**
232+
233+
```go
234+
func countQuadruplets(nums []int) int {
235+
ans, n := 0, len(nums)
236+
for a := 0; a < n-3; a++ {
237+
for b := a + 1; b < n-2; b++ {
238+
for c := b + 1; c < n-1; c++ {
239+
for d := c + 1; d < n; d++ {
240+
if nums[a]+nums[b]+nums[c] == nums[d] {
241+
ans++
242+
}
243+
}
244+
}
245+
}
246+
}
247+
return ans
248+
}
249+
```
250+
251+
```go
252+
func countQuadruplets(nums []int) int {
253+
ans, n := 0, len(nums)
254+
counter := make([]int, 310)
255+
for c := n - 2; c > 1; c-- {
256+
counter[nums[c+1]]++
257+
for a := 0; a < c-1; a++ {
258+
for b := a + 1; b < c; b++ {
259+
ans += counter[nums[a]+nums[b]+nums[c]]
260+
}
261+
}
262+
}
263+
return ans
264+
}
265+
```
71266

267+
```go
268+
func countQuadruplets(nums []int) int {
269+
ans, n := 0, len(nums)
270+
counter := make([]int, 310)
271+
for b := n - 3; b > 0; b-- {
272+
c := b + 1
273+
for d := c + 1; d < n; d++ {
274+
if nums[d] >= nums[c] {
275+
counter[nums[d]-nums[c]]++
276+
}
277+
}
278+
for a := 0; a < b; a++ {
279+
ans += counter[nums[a]+nums[b]]
280+
}
281+
}
282+
return ans
283+
}
72284
```
73285

74286
### **...**

0 commit comments

Comments
 (0)