54. 螺旋矩陣
class Solution {
public List<Integer> spiralOrder(int[][] matrix) {
List<Integer> ans = new ArrayList<>();
if(matrix == null || matrix.length == 0){
return ans;
}
int m = matrix.length;
int n = matrix[0].length;
int count = (Math.min(m,n) + 1)/2;
int i = 0;
while(i < count){
for(int j = i;j < n - i; j++){
ans.add(matrix[i][j]);
}
for(int j = i + 1;j < m - i;j++){
ans.add(matrix[j][(n - 1) - i]);
}
for(int j = (n - 1) - (i + 1);j >= i && (m - 1 - i != i);j--){
ans.add(matrix[m - 1 - i][j]);
}
for(int j = (m - 1 - (i + 1));j >= i + 1 && (n - 1 - i ) != i;j--){
ans.add(matrix[j][i]);
}
i++;
}
return ans;
}
}
73. 矩陣置零
class Solution {
public void setZeroes(int[][] matrix) {
int row = matrix.length;
int col = matrix[0].length;
boolean row0_flag = false;
boolean col0_flag = false;
for(int i = 0;i < col;i++){
if(matrix[0][i] == 0){
row0_flag = true;
break;
}
}
for(int j = 0;j < row;j++){
if(matrix[j][0] == 0){
col0_flag = true;
break;
}
}
for(int i = 1;i < row;i++){
for(int j = 1;j < col;j++){
if(matrix[i][j] == 0){
matrix[i][0] = 0;
matrix[0][j] = 0;
}
}
}
for(int i = 1;i < row;i++){
for(int j = 1;j < col;j++){
if(matrix[i][0] == 0 || matrix[0][j] == 0){
matrix[i][j] = 0;
}
}
}
if(row0_flag){
for(int i = 0;i < col;i++){
matrix[0][i] = 0;
}
}
if(col0_flag){
for(int j = 0;j < row;j++){
matrix[j][0] = 0;
}
}
}
}
945. 使數組唯一的最小增量
class Solution {
public int minIncrementForUnique(int[] A) {
Arrays.sort(A);
int move = 0;
for (int i = 1; i < A.length; i++) {
if (A[i] <= A[i - 1]) {
int pre = A[i];
A[i] = A[i - 1] + 1;
move += A[i] - pre;
}
}
return move;
}
}