奇安信2021秋招面试题

选择题:
int array[5] = {7,8,3,2,6};
int p = (int *)(array+1);
int *m=(int
)(&array +1);
printf("%d %d %d\n",(array+1),(p+1),(m-1)) ;
输出结果:
Answer: 8 3 6
只分析最后一个
array指向数组的首地址,也是数组中第一个元素的地址,array+1指向第二元素的地址。&array,表示指向地址的地址,&array+1指向一个和array相同元素的下一个地址,因为array大小为5
sizeof(int),所以&array+1的地址为array[0]+sizeof(int)或者array+5sizeof(int)。

编程题:
1.在一棵魔法森林中,每棵树都有攀比心里,每当魔法师指定一棵树时,指定的树高度不变,其他树的高度都会加1,知道所有树的高度都一样高时,所有树才会停止生长。魔法师当然不希望所所有的树疯狂生长,问魔法师知道需要操作多少次才能使得森立中的树停止生长.
用例输入/输出:
第一行输入一个数n,表示树的个数,第二行输入n个数,分别表示每棵树的高度 图片说明
没课树的高度ai满足,图片说明
输出一行一个数,表示使得树停止生长最少操作的次数。
input
3
1 2 3
output:
3
input:
4
5 2 3 7
output:
9
Analysis:
每次先找到森林中最大的值和最小的值,指定最大的,其他的树的高度均加上高树和最低树的差值d1,每轮结束至少有一个新的相等的树增加(森林中高度相等树的数量可能不会增加),并且新增加高度相等的树高度会一致相等(因为原来高度相等的树,只要不是深林中最高的,就不会导致其中一棵树被指定,另外其他树高度增加),因此证明该方法收敛。又因为每一轮中操作都是向着森林高度中高度相等的方向的走,可以等价于每一步都是最优的,因此也保证了最终结果的操作次数最少。
代码实现:

#include<iostream>
#include <vector>
using namespace std;
int main()
{
    int n;
    cin>>n;
    vector<long long> input;
    long long temp;
    for(int i = 0;i < n;i++)
    {
        cin>>temp;
        input.push_back(temp);
    }
    int minI,maxI;
    long long res = 0;
    while(1)
    {
        if(input[0] > input[1])
        {
            maxI = 0;
            minI = 1;
        }
        else
        {
            maxI = 1;
            minI = 0;
        }
        for(int i = 2;i<n;i++)
        {
            if(input[i] > input[maxI])
                maxI = i;
            if(input[i] < input[minI])
                minI = i;
        }
        if(input[maxI]== input[minI])
            break;
        else{
            long long minvalue = input[minI];
            res += input[maxI] - minvalue;
            //cout<<"A"<<endl;
            //更新除最高树之外的其他树
            for(int j  = 0;j < n;j++)
            {
                if(maxI!=j)
                {
                    input[j] += input[maxI] - minvalue;    
                } 
            } 
        }
    }
    cout<<res<<endl;
 } 

2.字符串替换,一个字符串中由0~9组成,接了下来有n组像(number1,number)的数据,每次将字符串中的数字number1替换成number2。注意查找效率。
样例输入
第一行输入一个只包含0~9的字符串,第二张输入一个整数n,接下来n行每行输入两个整数。
0285289430826
2
0 2
2 3
样例输出
输出替换后的字符串
3385389433836
Analysis:
思路1:对每次数组都遍历整个字符串进行替换,时间复杂度为O(n*t),t为字符串的长度。
思路2:因为n组数字替换,前面的数字替换很多会被后面的数字替换,因此希望确定0~9最终的对应的数字后在遍历整个字符换进行替换,应为只有0~9十个数,因此使用一个数组模拟一个hash表。根据下标关系和数字关系的隐形下标作为hash函数,这样在替换整个字符串的时候,确定要替换的数字也可以实现快速查找。时间复杂度为O(max(n,t)),t为字符串的长度。
实现:

#include <iostream>
#include <vector>
#include "algorithm"
using namespace std;



int main(){
    string str;
    cin>>str;
    int n;
    cin>>n;
    char data[n][2];
    vector<int> numbers(10,-1);

    for(int i=0;i<n;i++){
        int  a,b;
        cin>>a>>b;
        for(int j = 0;j < 10;j++)
        {
            if(numbers[j] == a)
            {
                numbers[j] = b;
            }
            if(numbers[a] == -1)
                numbers[a] = b;
        }

    }
       for(int i=0;i<str.length();i++){
        if(numbers[str[i] - '0']!= -1){
            str[i] = numbers[str[i] - '0']+'0';
        }  
    }
    cout<<str;
    return 0;
}
全部评论

相关推荐

避坑恶心到我了大家好,今天我想跟大家聊聊我在成都千子成智能科技有限公司(以下简称千子成)的求职经历,希望能给大家一些参考。千子成的母公司是“同创主悦”,主要经营各种产品,比如菜刀、POS机、电话卡等等。听起来是不是有点像地推销售公司?没错,就是那种类型的公司。我当时刚毕业,急需一份临时工作,所以在BOSS上看到了千子成的招聘信息。他们承诺无责底薪5000元,还包住宿,这吸引了我。面试的时候,HR也说了同样的话,感觉挺靠谱的。于是,我满怀期待地等待结果。结果出来后,我通过了面试,第二天就收到了试岗通知。试岗的内容就是地推销售,公司划定一个区域,然后你就得见人就问,问店铺、问路人,一直问到他们有意向为止。如果他们有兴趣,你就得摇同事帮忙推动,促进成交。说说一天的工作安排吧。工作时间是从早上8:30到晚上18:30。早上7点有人叫你起床,收拾后去公司,然后唱歌跳舞(销售公司都这样),7:55早课(类似宣誓),8:05同事间联系销售话术,8:15分享销售技巧,8:30经理训话。9:20左右从公司下市场,公交、地铁、自行车自费。到了市场大概10点左右,开始地推工作。中午吃饭时间大约是12:00,公司附近的路边盖饭面馆店自费AA,吃饭时间大约40分钟左右。吃完饭后继续地推工作,没有所谓的固定中午午休时间。下午6点下班后返回公司,不能直接下班,需要与同事交流话术,经理讲话洗脑。正常情况下9点下班。整个上班的一天中,早上到公司就是站着的,到晚上下班前都是站着。每天步数2万步以上。公司员工没有自己的工位,百来号人挤在一个20平方米的空间里听经理洗脑。白天就在市场上奔波,公司的投入成本几乎只有租金和工资,没有中央空调。早上2小时,晚上加班2小时,纯蒸桑拿。没有任何福利,节假日也没有3倍工资之类的。偶尔会有冲的酸梅汤和西瓜什么的。公司的晋升路径也很有意思:新人—组长—领队—主管—副经理—经理。要求是业绩和团队人数,类似传销模式,把人留下来。新人不能加微信、不能吐槽公司、不能有负面情绪、不能谈恋爱、不能说累。在公司没有任何坐的地方,不能依墙而坐。早上吃早饭在公司外面的安全通道,未到上班时间还会让你吃快些不能磨蹭。总之就是想榨干你。复试的时候,带你的师傅会给你营造一个钱多事少离家近的工作氛围,吹嘘工资有多高、还能吹自己毕业于好大学。然后让你早点来公司、无偿加班、抓住你可能不会走的心思进一步压榨你。总之,大家在找工作的时候一定要擦亮眼睛,避免踩坑!———来自网友
qq乃乃好喝到咩噗茶:不要做没有专业门槛的工作
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

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