巨人网络20201029笔试题记录

1. 进制转换

  • 题目描述:10进制数转成2进制数后取反,再10进制输出。
  • 分析:这个题目很基础,考察的进制转换很细致。要是平时没注意细节在笔试段时间内很难很快的做出来。10进制转2进制是做除法,2进制转回去是做乘法。基础概念需要去看一下。取反操作就是比如5的二进制是101,取反就是010.转成10进制就是2.最后代码输出2.

    代码

    #include<iostream>
    #include<math.h>
    using namespace std;
    int main()
    {
      int n;
      cin >> n;
      int a[100];
      int index = 0;
      int t = n;
      while (t)
      {
          a[index++] = t % 2;  // 存储到a中 把2
          t /= 2; 
      }
      int re = 0;
      for (int i = index - 1; i >= 0; i--)
      {
          if (a[i] == 0) //转换后的2进制数要取反 我们不取反 把等于0的位置相乘 也能起到一样的效果
              re += pow(2, i);
      }
      cout << re << endl;
    }

    2. 矩阵旋转顺时针90度

  • 题目描述:输入一个N*N矩阵,返回这个矩阵顺时针旋转90度后的矩阵。
    vector<vector<int>> rotaMatriox(vector<vector<int>> & matrix){
              int n = matrix.size();
              vector<vector<int>> result(n,vector<int>(n)); // 定义一个结果矩阵 返回旋转后的矩阵
              for(int i =0; i<n;i++)
                  for(int j =0; j<n;j++)
                  result[j][n-i-1] = matrix[i][j]; // 找到旋转后坐标对应关系
              return result;
    }
    这个题目其实不难,做过类似的。直接原地旋转,还不用开辟新的空间。
全部评论

相关推荐

hwwhwh:同双非,有大厂实习其实也没啥用,主要看运气,等就行了
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务