招行网络科技笔试


48. 旋转图像

在这里插入图片描述

class Solution {
    public void rotate(int[][] matrix) {
      int n=matrix.length;
       for(int i=0;i<n;i++){
          for(int j=i;j<n;j++){
             int t=matrix[i][j];
             matrix[i][j]=matrix[j][i];
             matrix[j][i]=t;
          }
       }


       for( int i=0;i<n;i++){
            for(int j=0;j<n/2;j++){
             int r= matrix[i][j];
             matrix[i][j]=matrix[i][n-j-1];   
            matrix[i][n-j-1]=r;
            }
       } 
    }
}

剑指 Offer 56 - I. 数组中数字出现的次数

在这里插入图片描述

 
   class Solution {
    public int[] singleNumbers(int[] nums) {
        int sum=0;
        //得到异或结果,即为不相同两个数的异或结果sum
        for(int num:nums)
            sum^=num;
        //得到sum的二进制的1的最低位
        int flag=(-sum)&sum;
        int result[]=new int[2];
        //分成两个组进行异或,每组异或后的结果就是不相同两个数的其中之一
        for(int num:nums){
            if((flag&num)==0)
                result[0]^=num;
            else{
                result[1]^=num;
            }
        }
        return result;
    }
}
 

版权声明:本文为qq_38847154原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。