5.7 七牛云后台开发实习C卷

吐槽一下,明明投的是C++后台实习,结果C卷里好多Java的题目。。。

  • 单项选择题
  • 不定项选择题
  • 两道编程题
  • 1.链表奇偶调换
    //AC 代码
    //struct ListNode {
    //    int val;
    //    struct ListNode *next;
    //};
    ListNode* ExchangeOddEvenNode(ListNode* input) {
      if (input == nullptr)
          return nullptr;
      int n = 0;
      ListNode* temp = input;
      while (temp != nullptr)
      {
          temp = temp->next;
          n++;
      }
      int i = 0, j = 1;
      while (i < n&&j < n)
      {
          ListNode* p1 = input;
          ListNode* p2 = input;
          std::advance(p1, i);
          std::advance(p1, j);
          int val = p1->val;
          p1->val = p2->val;
          p2->val = val;
          i += 2;
          j += 2;
      }
      return input;
    }
  • 2.小牛竞赛

    学生从左到右站成一排,一轮选拔后,记录下学生的成绩(整数),取连续几个学生,要求这几个学生的平均分大于等于给定的成绩b,输出可能取法的数量。
    输入 n,b 【n代表学生个数,b代表给定的成绩】
    n个学生的成绩,从左到右
    示例:
    输入:5 9
    32 4 9 21 10
    输出:13

  • 还是太菜了,我咋感觉题目有问题,总组合数只有10种,为啥能输出13?(经大家提醒,知道原因了,单独选1个人也算是一种情况,考试时咋没想明白。。。)
  • 问答题:改进单例模式类,提升其性能。
#七牛云##笔经##C++工程师#
全部评论
AC代码: #include<cstdio> #include<vector> using namespace std; int main() {     int n, p, b, res = 0;     vector<int> sum(1, 0);     scanf("%d %d", &n, &b);     for (int i = 0; i < n; i++)     {         scanf("%d", &p);         sum.push_back(p + sum.back());     }     for (int i = 0; i <= n; i++)         for (int j = i + 1; j <= n; j++)             if ((sum[j] - sum[i]) / (j - i) >= b) res++;     printf("%d", res);     return 0; }
1 回复
分享
发布于 2020-05-08 00:07
第二题我自己试了好像没问题,但是提交后0%,很难受
点赞 回复
分享
发布于 2020-05-07 22:04
联易融
校招火热招聘中
官网直投
总组和不止10种吧,一个人也是一个组合,只要连续就是一个组合
点赞 回复
分享
发布于 2020-05-08 00:10

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务