Как написать метод, который возвращает true, если ни одна строка не длиннее предыдущей строки, в противном случае false?
Скажем, если у меня есть 2D-массив:
int[][] s = {{1, 4, 5, 10, 11}, {2, 6, 8}, {3, 9, 12}, {7}};
и я хочу написать метод, который гарантирует, что следующая строка будет короче, чем остальная часть массива, как бы я поступил так?
Как мне написать метод, который возвращает истину, если ни одна строка не длиннее предыдущей, и ложь в противном случае?
Вот моя логика, хотя я далеко, просто не понимаю логически, как это сделать, я думаю.
public static boolean rowDecrease(int[][] t){
//result empty array here
for (int j = 0; j < t.length; j++) {
for (int i = 0; i< t[i].length; i++) { // Sum of Columns
if (t[i].length>result){
result = t[i].length;
return false;
}
if (t[i].length<result){
result = t[i].length;
return true;
}
}
}
3 ответа
Пожалуйста, сделайте попытку или представьте проблему с существующим кодом перед публикацией в будущем. В противном случае мы начнем отправлять вам счета.
public boolean shorterThanTheRest(int[][] s){
int shortestLength = s[0].length + 1;
for(int i = 0; i < s.length; i++)
if(s[i].length < shortestLength)
shortestLength = s[i].length;
else
return false;
return true;
}
Я думаю, что код, подобный этому, разрешит ваш вопрос:
boolean resultado = true;
for(int i = 1; i < s.length; i++){
if(s[i].length >= s[i-1].length) return false;
}
return true;
Вы можете сделать это с помощью Java Stream:
int[][] s = {{1, 4, 5, 10, 11}, {2, 6, 8}, {3, 9, 12}, {7}};
List<Integer> S = Arrays.stream(s).map(i->i.length).collect(Collectors.toList());
boolean is = IntStream.range(0, S.size()).skip(1).allMatch(i->S.get(i)<=S.get(i-1));
Я надеюсь, что это помогает.