• 阿里巴巴后端预热题,秋招第一波笔试的悲惨遭遇。


    作为一名软件工程的本科生,满怀热情的投了各大公司的简历。

    今天早上兴致勃勃的做了阿里巴巴后端开发的第一道预热题。

     

    经过一番挣扎,我觉着,题目出的不够严谨,并且测试用例也出现错误了。

    题目描述如下。

     

    幼儿园有10个小朋友,把1 – 20中所有奇数数字的卡片分别发给这20个小朋友。
    集合的时候小朋友们排成一排,组成一个由数字组成的字符串,如35971315….11917,
    但是老师发现少了一个小朋友,你能帮忙找出少掉的那个小朋友吗?

    输入:
    数字组成的字符串
    输出:
    缺失的那个数字
    输入范例:
    359713159151191
    输出范例:
    3

    这道题限时40分钟,要求只能用C++来编写。开始拿到题10多分钟我就有了思路。

    捋一下思虑:

    幼儿园有10个小朋友!!10个!(题目中把卡片发给了20个小朋友??!!)

     老师发给他们   1到20的奇数卡片!!注意是奇数!!也就是1 3 5 7...19,最大是19,最小是1。

    然后集合他们站成一排,没有顺序。

    按照我的理解,每个人手里的数只能是如下:1、3、5、7、9、11、13、15、17、19 之中的数。

    我们要找到少的小朋友,换句话说,也就是字符串中没出现以上数当中的哪一个??

    因为把所有数字排成字符串了,我把1到19所有的数都列出来排成字符串,发现一共是15位数字。135791113151719 不论顺序怎么样一共是15位。

    如果少一个数字,则如果少一个一位数,应该出现14位测试用例,如果少一个两位数,则应出现13位的测试用例。(但是阿里在线评测的测试用例给的是15位??!!!??少小朋友吗??)

    再提一个我的疑问:如果1到19的所有奇数都出现,按照我的理解,最多只能出现两次9,一个9 另一个19 应该没有其他情况了吧?? 但是测试用例了出现了三次9???!!!

    我都蒙了,怎么排都排不开了!

    更奇怪的是,当我忽略这些,按照我的思路去解答这道题的时候,我的答案竟然和测试用例的答案相同!!不知道为啥。。

    我给出我解答的思路:

    小朋友的数字是1到19的奇数,那如果小朋友手里是两位数,则一定是十几,也就是输入的字符中如果出现1,要么是十几,要么是1.

        如果出现的数字不是1,那就一定是个位数。

    我的思想是:

      先计算1到19所有奇数的加和存给sum。经过计算sum是100.

      然后遍历整个输入的字符串:

        如果出现1,我就把sum减小10,按照碰到十几来计算

        如果出现不是1,我就把sum减小出现那个数。

      经过这样一个遍历,有可能本年来出现1的数字,我把它当成10了,所以我又对sum进行判断,如果sum小于等于0,就让它增10 再减1.

     

    但是不论如何,给出我的代码,不知道我的思路是否正确,希望能带给大家一些思路。

    我的代码是这样的:C++实现

     1 #include "iostream"
     2 using namespace std;
     3 int main(){
     4     char li[50];
     5     cin>>li;
     6     int sum = 0;
     7     for(int i = 1;i<=19;i+=2){
     8         sum+=i;
     9     }
    10     for( int i = 0;li[i]!='';i++ ){
    11         if(li[i]=='1'){
    12             sum -= 10;
    13         }
    14         if(li[i]>='2'){
    15             int a = li[i]-'0';
    16             sum -= a;
    17         }
    18     }
    19     while( sum <= 0 ){
    20         sum+=9;
    21     }
    22     cout<<sum;
    23 
    24 
    25     return 0;
    26 }

    在网上目前也没查到任何关于这道题的信息,所以写下这篇博文。

    如果有好朋友觉着我的思路有问题,希望能得到指点!

    感恩戴德!

    嘻嘻~~

  • 相关阅读:
    k8s 使用 Init Container 确保依赖的服务已经启动
    asp.net core 从 3.0 到 3.1
    Github原生CI/CD,初尝Github Actions
    [nginx]编译安装及安全优化
    [nginx]盗链和防盗链场景模拟实现
    [nginx]location语法
    [nginx]站点目录及文件访问控制
    [svc]nginx限制客户端上传附件的大小
    [sql]mysql指引(整理中...)-对db的分类
    [sql]mysql参数(配置)手册
  • 原文地址:https://www.cnblogs.com/Lin-Yi/p/7349086.html
Copyright © 2020-2023  润新知