三元运算符语法补充:
三元运算符的语法是:条件 ? 值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](左邻居是数组第二个元素)