三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

Kimi LeetCode 3803. 统计残差前缀 Java实现

Kimi    LeetCode 3803. 统计残差前缀 Java实现

看到您问的是 totalNumbers 方法,这应该是 LeetCode 3803 题的另一个变体或相关题目。不过根据我查阅的资料,LeetCode 3803 官方题解中的方法名是 countResiduePrefixes,而不是 totalNumbers。

您提到的 totalNumbers 可能是:

1. 该题目的其他语言版本
2. 周赛中的另一道题目
3. 题目编号有误

如果您确实需要 totalNumbers 方法

如果这是关于数字排列组合的问题(常见于此类方法名),典型题目是:给定数字数组,组成满足特定条件的整数个数。

通用模板实现

```java
class Solution {
public int totalNumbers(int[] digits) {
// 示例:统计能组成多少种不同的三位偶数
Set<Integer> set = new HashSet<>();
int n = digits.length;

for (int i = 0; i < n; i++) {
if (digits[i] == 0) continue; // 百位不能为0
for (int j = 0; j < n; j++) {
if (j == i) continue;
for (int k = 0; k < n; k++) {
if (k == i || k == j) continue;
if (digits[k] % 2 != 0) continue; // 个位必须为偶数

int num = digits[i] * 100 + digits[j] * 10 + digits[k];
set.add(num);
}
}
}
return set.size();
}
}
```

如果您要的是 LeetCode 3803 的题解

正确的实现应该是:

```java
class Solution {
public int countResiduePrefixes(String s) {
boolean[] seen = new boolean[26]; // 假设只有小写字母
int distinct = 0;
int count = 0;

for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (!seen[c - 'a']) {
seen[c - 'a'] = true;
distinct++;
if (distinct > 2) break; // 剪枝优化
}
if (distinct == (i + 1) % 3) {
count++;
}
}
return count;
}
}
```

请确认您的需求

为了给您最准确的帮助,请确认:

1. 方法名是 totalNumbers 还是 countResiduePrefixes?
2. 参数是 int[] digits 还是 String s?
3. 题目具体要求是什么?

如果是 LeetCode 3803,请使用方法 countResiduePrefixes(String s);如果不是,请提供完整的题目描述,我会为您重新解答。

← 返回列表