三元运算符语法补充:
三元运算符的语法是:条件 ? 值1 : 值2
如果条件为true,表达式结果为值1
如果条件为false,表达式结果为值2
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 读取数组长度m
int m = sc.nextInt();
// 创建长度为m的数组metrix
int[] metrix = new int[m];
// 读取数组元素
for (int i = 0; i < m; i++) {
metrix[i] = sc.nextInt();
}
// 读取需要放置的1的个数n
int n = sc.nextInt();
// 记录成功放置的1的个数
int can = 0;
// 遍历数组,尝试在为0的位置放置1
for (int i = 0; i < m; i++) { // 遍历整个数组
// 如果当前位置为0
if(metrix[i] == 0){
// 确定左邻居的值(如果是边界则为0)
int left = (i == 0 ? 0 : metrix[i-1]);
// 确定右邻居的值(如果是边界则为0)
int right = (i == m - 1) ? 0 : metrix[i + 1];
// 如果左右邻居都为0
if (left == 0 && right == 0) {
metrix[i] = 1;// 在当前位置放置1
can++;// 计数器增加
if (can >= n) break;// 如果已经放置了足够的1,就跳出循
}
}
}
// 输出结果, 如果可以放置的1的个数can>=n,则输出true,否则输出false
System.out.println( can >= n ? "true" : "false");
sc.close();
}
}
int left = (i == 0 ? 0 : metrix[i-1]);
这行代码的目的是获取当前位置i的左邻居的值:
i == 0:判断当前是否在数组的第一个位置(索引为0)
如果i == 0为true(即在第一个位置),那么左边没有元素,所以left = 0
如果i == 0为false(即不在第一个位置),那么左邻居就是metrix[i-1]
举例说明:
当i=0时:left = 0(因为没有左邻居)
当i=1时:left = metrix[0](左邻居是数组第一个元素)
当i=2时:left = metrix[1](左邻居是数组第二个元素)

京公网安备 11010502036488号