1337. The K Weakest Rows in a Matrix
class Solution { private class Row{ int rowNum; int soliders; public Row(int rowNum, int soliders) { this.rowNum = rowNum; this.soliders = soliders; } public int getRowNum() { return rowNum; } public void setRowNum(int rowNum) { this.rowNum = rowNum; } public int getSoliders() { return soliders; } public void setSoliders(int soliders) { this.soliders = soliders; } } public int[] kWeakestRows(int[][] mat, int k) { int rowCount =0; ArrayList rows = new ArrayList(); int i = 0; for(i =0; i < mat.length; i++) { rowCount =0; for (int j = 0; j < mat[i].length; j++) { if(mat[i][j] == 1) rowCount++; } rows.add(new Row(i,rowCount)); } Collections.sort(rows, new Comparator(){ @Override public int compare(Row o1, Row o2) { if (o1.getSoliders() == o2.getSoliders()) { return ((Integer)o1.getRowNum()).compareTo((Integer)o2.getRowNum()); } return ((Integer)o1.getSoliders()).compareTo((Integer)o2.getSoliders()); }}); int[] out = new int[k]; for (int j = 0; j < out.length; j++) { out[j] = rows.get(j).getRowNum(); } return out; } }