Вы можете использовать ArrayList вместо массива. Таким образом, вам не нужно знать точное число перед созданием массива, и вы можете пропустить подсчет. Однако вам нужно будет использовать Integer, поскольку вы не можете помещать примитивы в Java Коллекции.
List<Integer> getNegatives(int[][] m) {
List<Integer> negatives = new ArrayList<>();
for (int[] ints : m) {
for (int anInt : ints) {
if (anInt < 0) {
negatives.add(anInt);
}
}
}
return negatives;
}
Если вы действительно не хотите использовать Коллекции, вы все равно можете улучшить свой код, используя расширенную для л oop
int[] getNegatives(int[][] m) {
int countNegatives = 0;
for (int[] ints : m) {
for (int anInt : ints) {
if (anInt < 0) {
countNegatives += 1;
}
}
}
int[] arr = new int[countNegatives];
int increase = 0;
for (int[] ints : m) {
for (int anInt : ints) {
if (anInt < 0) {
arr[increase++] = anInt;
}
}
}
return arr;
}