publicclass_05_顺时针打印矩阵 {publicint[]spiralOrder(int[][] matrix){if(matrix.length ==0)returnnewint[0];int left =0, right = matrix[0].length -1;int top =0, bottom = matrix.length -1;int[] res =newint[(right+1)*(bottom+1)];int index =0;while(true){for(int i = left; i <= right; i ++){
res[index++]= matrix[left][i];// 从左到右}if(++top > bottom)break;// 往下走,如果超出范围则停止for(int i = top; i <= bottom; i++){
res[index++]= matrix[i][right];// 从上往下}if(--right < left)break;for(int i = right; i >= left; i--){
res[index++]= matrix[bottom][i];}if(--bottom < top)break;for(int i = bottom; i >= top; i--){
res[index++]= matrix[i][left];}if(++left > right)break;}return res;}}
剑指53- 1-在排序数组中查找数字
publicclass_53_在排序数组中查找数字 {publicintsearch(int[] nums,int target){returnhelper(nums, target)-helper(nums, target -1);}publicinthelper(int[] nums,int tar){int i =0, j = nums.length -1;while(i <= j){int m =(i + j)/2;if(nums[m]<= tar) i = m +1;else j = m -1;}return i;}}
剑指53- 2- 0~n-1中缺失的数字
publicclass_53_缺失的数字 {publicintmissingNumber(int[] nums){int i =0, j = nums.length -1;while(i <= j){int m =(i + j)/2;if(nums[m]== m) i = m +1;else j = m -1;}return i;}}