29.顺时针打印矩阵
//常规的暴力解法,注意边界
var spiralOrder = function(matrix) {
if(matrix.length==0||matrix[0].length==0) return [];
let x = 0;
let y = matrix.length-1;
let a = 0;
let b = matrix[0].length-1;
let res = [];
while(1){
for(let i = a;i<=b;i++){
res.push(matrix[x][i]);
}
if(++x>y){
break;
}
for(let i = x;i<=y;i++){
res.push(matrix[i][b]);
}
if(--b<a){
break;
}
for(let i = b;i>=a;i--){
res.push(matrix[y][i]);
}
if(--y<x){
break;
}
for(let i = y;i>=x;i--){
res.push(matrix[i][a]);
}
if(++a>b){
break;
}
}
return res;
};
16.数值的整数次方
// 快速幂,二分法。记住求2的余数是>>(右移)
var myPow = function(x, n) {
if(n==0) return 1;
if(n==1) return x;
if(n==-1) return 1/x;
let res = myPow(x,n>>1);
res *= res;
if(n&1===1){
res *= x;
}
return res;
};