题解 | #特殊排序#

特殊排序

https://www.nowcoder.com/practice/57f0f528bff149be9580af66f6292430

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


int main() {
    int a,b,counter;
    vector<int> arr;    //借用vector的popback函数来完成对最大值的去除
    while (cin >> a) { // 注意 while 处理多个 case
       // cout << a + b << endl;
     for (int i = 0; i < a; i++) 
     {
       cin >> b;
       arr.push_back(b);   //数组成型
     }
     b = arr[0];  //默认最大值
     counter = 0; //最大值标记
     for (int i = 0; i < a; i++) 
     {
       if(b < arr[i])
       {
        counter = i; //扫描一遍数组,获取最大值和标记
        b = arr[i];
       }
     }
     printf("%d\n",b);
     if (a == 1) {  //处理特殊情况
        b = -1;
        printf("%d\n",b);
        return 0;
       }
      arr[counter] = arr[a-1];  //把最大值交换到末尾
      arr.pop_back();  //pop末尾,完成对最大值的去除
      sort(arr.begin(),arr.end());  //灵魂一步,排序,对vector的排序需要begin与end两个函数来获取其内存位置
      for (int i = 0;i < a - 1; i++) {  //完成排序,输出
       printf("%d ",arr[i]);
      }
    }
}
// 64 位输出请用 printf("%lld")

使用vector来操作,输入即是push,扫描一遍数组获取最大值,把最大值与末尾的数值交换,pop末尾,排序,输出。

全部评论

相关推荐

ProMonkey2024:5个oc?厉害! 但是有一个小问题:谁问你了?😡我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了(别的帖子偷来的,现学现卖😋)
点赞 评论 收藏
分享
已老实求offer😫:有点像徐坤(没有冒犯的意思哈)
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务