【题目要求】
【解题思路】
本题是排序题,需要循环,判断比较,交换。
题目要求偶数在前,奇数在后,那么我选择采取双指针的方法:
左指针寻找奇数值,右指针寻找偶数值,当符合交换条件时,进行两数交换;
否则指针继续左右运动,寻找符合条件的奇偶值。
当两指针相遇时,结束循环
【代码实现】
public int[] sortArrayByParity(int[] A) {
if(A == null || A.length == 1)
return A;
//左、右指针初始化
int left = 0;
int right = A.length - 1;
int temp;
while(left < right){
//左指针对应奇数值,右指针对应偶数值,进行交换
if((A[left] & 1) == 1 && (A[right] & 1) == 0){
temp = A[left];
A[left] = A[right];
A[right] = temp;
}else if((A[left] & 1) == 0){
//左指针对应的是偶数值,符合题意,继续向右移动
left++;
}else if((A[right] & 1) == 1){
//右指针对应的是奇数值,符合题意,继续向左移动
right--;
}
}
return A;
}
}
【题目要求】
【解题思路】
对于对角线上的元素来说,如果当前元素不是第一个出现的元素,那么它前面的元素一定在当前元素的左上角。可以推出,对于位于坐标 (r, c) 上的元素,只需要检查 r == 0 or c == 0 or matrix[r-1][c-1] == matrix[r][c] 就可以了。
【代码实现】
class Solution {
public boolean isToeplitzMatrix(int[][] matrix) {
if(matrix.length == 1) {
return true;
}
for(int i = 1; i < matrix.length; i++) {
for(int j = 1; j < matrix[0].length; j++) {
if(matrix[i][j] != matrix[i - 1][j - 1]) {
return false;
}
}
}
return true;
}
}