第23天--算法(Leetcode 66,69,70,73,75)
66.加一
public int[] plusOne(int[] digits) {
int N = digits.length;
for(int i = N - 1;i >= 0;i --) {
if(digits[i] < 9) {
digits[i] ++;
return digits;
}
digits[i] = 0;
}
int ans[] = new int[N + 1];
ans[0] = 1;
return ans;
}
69.Sqrt(x)
public int mySqrt(int x) {
if(x == 0) {
return 0;
}
if(x < 3) {
return 1;
}
long L = 0;
long M = 0;
long R = x;
long ans = -1;
while(L <= R) {
M = (L + R) >> 1;
if(M * M <= x) {
ans = M;
L = M + 1;
}else {
R = M - 1;
}
}
return (int)ans;
}
70.爬楼梯
public int climbStairs(int n) {
int dp[] = new int[n + 1];
if(n < 0) {
return 0;
}
if(n == 0 || n == 1 || n == 2) {
return n;
}
dp[1] = 1;
dp[2] = 2;
for(int i = 3;i <= n;i ++) {
dp[i] = dp[i - 1] + dp[i - 2];
}
return dp[n];
}
73.矩阵置零
public void setZeroes(int[][] matrix) {
boolean rowisZero = false;
boolean colisZero = false;
for(int j = 0;j < matrix[0].length;j ++) {
if(matrix[0][j] == 0) {
rowisZero = true;
break;
}
}
for(int i = 0;i < matrix.length;i ++) {
if(matrix[i][0] == 0) {
colisZero = true;
break;
}
}
for(int i = 1;i < matrix.length;i ++) {
for(int j = 1;j < matrix[0].length;j ++) {
if(matrix[i][j] == 0) {
matrix[i][0] = 0;
matrix[0][j] = 0;
}
}
}
for(int i = 1;i < matrix.length;i ++) {
if(matrix[i][0] == 0) {
for(int j = 1;j < matrix[0].length;j ++) {
matrix[i][j] = 0;
}
}
}
for(int j = 1;j < matrix[0].length;j ++) {
if(matrix[0][j] == 0) {
for(int i = 1;i < matrix.length;i ++) {
matrix[i][j] = 0;
}
}
}
if(rowisZero) {
for(int j = 0;j < matrix[0].length;j ++) {
matrix[0][j] = 0;
}
}
if(colisZero) {
for(int i = 0;i < matrix.length;i ++) {
matrix[i][0] = 0;
}
}
}
75.颜色分类
public void sortColors(int[] nums) {
int index = 0;
int less = -1;
int more = nums.length;
while(index < more) {
if(nums[index] == 1) {
index ++;
}else if(nums[index] == 0) {
swap(nums,index ++,++ less);
}else {
swap(nums,index,-- more);
}
}
}
public void swap(int arr[],int x,int y) {
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}

浙公网安备 33010602011771号