int findMinValid(int left, int right) {int ans = -1;while (left <= right) {int mid = (left+right)/2;if (check(mid)) {// 满足条件,尝试找更小的解ans = mid; // 记录当前有效解right = mid - 1; // 缩小右边界} else {// 不满足条件,需要增大值left = mid + 1;}}return ans; // 若返回-1表示无满足条件的值
}int findMaxValid(int left, int right) {int ans = -1; // 初始化为无效值while (left <= right) {int mid = (left+right)/2;if (check(mid)) {// 满足条件,尝试找更大的解ans = mid; // 记录当前有效解left = mid + 1; // 扩大左边界} else {// 不满足条件,需要减小值right = mid - 1;}}return ans;
}