题解 | #有趣的数字#

有趣的数字

http://www.nowcoder.com/practice/af709ab9ca57430886632022e543d4c6

采用网友思路,感谢支持,与提醒

图片说明

#include<bits/stdc++.h>

using namespace std;

int main(){
    int N,a;

    while(cin>>N){
       vector<int> res;
       for(int i = 0; i< N; i++){
           cin>>a;
           res.push_back(a);
       }
        int length = res.size();
        sort(res.begin(),res.end());


        //求最小值minVal
        int minValue = res[1]-res[0];
        for(int i = 1; i< N-1; i++){
            int cur=res[i+1]-res[i];
            if(cur<minValue){
                minValue = cur;// 想到 2 3 3 3 就算拍了序,前两个相减未必是那个最小值
            }
        }


        //求最小值得个数
        int minCount = 0;
        if(minValue == 0){
            for(int i = 0; i< length -1;i++ ){
                for(int j = i+1; j< length;j++){
                    if(res[i]==res[j]) minCount++; //排列组合,相同的元素不同位置组合也是不同得
                }
            }
        }else{//arr中无元素相等时
            for(int i = 0;i< length-1;i++){
                int cur = res[i+1] - res[i];//2 3 4
                if(cur==minValue){
                    minCount++;
                }
            }
        }


        //求最大值maxVal
        int maxValue = res[length-1] - res[0];

        int maxCount = 0;
        if(maxValue == 0){//全部元素都相等,利用组合原理
            maxCount = (length*(length-1))/2;
        }else{//有不同的元素,最大值的个数=最小的个数*最大的个数
            int smallCount = 0, bigCount = 0;

            for(int i = 0; i< length;i++){
                if(res[i] == res[0]){
                    smallCount++;
                }else if(res[i] == res[length -1]){
                    bigCount++;
                }
            }
            maxCount = smallCount*bigCount;
        }



        cout<<minCount<<' '<<maxCount<<endl;

    }

    return 0;
}
大厂笔试题题解 文章被收录于专栏

主要是公司笔试题得一些总结

全部评论

相关推荐

2025-12-29 20:37
已编辑
清华大学附属小学 Java
哇哇的菜鸡oc:1.为什么要写这么多内容呀 2.什么叫做简历 3.什么样的内容可以写到简历上 4.项目可以包装,但是要有理有据呀,不能乱包装呀,比如 跨境能达到日均120万订单的在国内都是能叫的上名字的,而且这些工作也基本上不太会交给一个实习生去做 建议友友可以去网上或者找同学的简历看看,他们的简历是怎么写的,去找找上面的那四个问题的答案吧,然后要记住的是Java是服务于业务的,而不是服务于微服务或者技术的
最后再改一次简历
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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