java - 检查数组中大小为 x 的相等连续元素的更好方法?
问题描述
public static void main(String[] args) {
int[] a = { 0, 0, 1, 1, 1, 1, 1, 0, 0 };
int[] b = { 0, 0, 1, 0, 1, 1, 1, 0, 0 };
System.out.println(consecutiveEqualofSize(a, 5));
System.out.println(consecutiveEqualofSize(b, 5));
System.out.println(consecutiveEqualofSize(b, 3));
}
public static boolean consecutiveEqualofSize(int[] a, int size) {
int count = 0;
boolean flag = false;
for (int i = 0; i < a.length; i++) {
if (flag) {
break;
}
if (a[i] == 1) {
for (int j = i; j < i + size; j++) {
if (j == a.length - 1)
break;
if (a[j] == 1) {
count++;
} else {
count = 0;
break;
}
if (count == size)
flag = true;
}
}
}
return flag;
}
main 方法中的代码打印“True, False, True”。我是编程领域的新学生,想要一些提示
解决方案
从第二个元素开始你的循环。您只需要比较当前元素和前一个元素即可计算重复项。如果您立即获得所需的计数返回。就像是
public static boolean consecutiveEqualofSize(int[] a, int size) {
int count = 0;
for (int i = 1; i < a.length; i++) {
if (a[i] == a[i - 1]) {
count++;
if (count >= size - 1) {
return true;
}
} else {
count = 0;
}
}
return false;
}
推荐阅读
- excel - 如何在Excel中对齐两列和与之对应的相邻单元格
- linux - 如何在 AWS ECS 集群配置期间传递脚本?
- flutter - firebase 存储 ERORR
- moodle - BBB 录音未在 Moodle 中显示
- gnuplot - gnuplot 拟合扩展了分配的点。如何解决这个错误?
- javascript - 我想先运行 Node js 代码来创建 PDF,然后使用 sendgrid 将创建的 PDF 发送到电子邮件,然后删除创建的 pdf
- cakephp - 控制器的属性名称与 bake 指定的不匹配(CakePHP4)
- git - Git使用用户名和密码推送到特定分支
- ios - 在 AppDelegate 中使用 NSUserAcitivty 的应用程序剪辑的相同 URL 的 ios 应用程序启动不一致
- powershell - 在一行powershell中循环遍历一系列数字