牛客 序列排列1

简介: 牛客 序列排列1

牛客 序列排列1


题目:


给定一个长度为 n 序列 {a},对序列 {a} 进行任意排列之后得到新的数组 {b},求满足 i∈[1,n],ai≠bi的 i 最多可能个数。


输入描述:


第一行输入一个整数 n(1≤n≤105)


第二行,n 个整数 ai(1≤ai≤105)


输出描述:


一行,表示答案。

示例1


输入


5

1 1 2 2 5


输出


5


思路:先找到序列中相同元素的最大数量,如果小于等于序列总数一半时,直接输出序列长度,否则输出2倍的其他元素个数之和

AC代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,a[101010];
    cin>>n;
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
    }
    sort(a,a+n);
    int sum=1,ans=1;
    for(int i=1;i<n;i++)
    {
        if(a[i]==a[i-1])
        ans++;
        else
        sum=max(ans,sum),ans=1;
    }
    sum=max(ans,sum);
    int num;
    num=n-sum;
    if(sum<=n/2)
    {
        cout<<n<<endl;
    }
    else
    cout<<2*num<<endl;
    return 0;
}

目录
相关文章
【LeetCode-每日一题】-378. 有序矩阵中第K小的元素
【LeetCode-每日一题】-378. 有序矩阵中第K小的元素
|
1月前
|
算法 搜索推荐
每日一题——下一个排列
每日一题——下一个排列
|
1月前
|
算法
【剑指offer】-字符串的排列-26/67
【剑指offer】-字符串的排列-26/67
|
1月前
剑指Offer LeetCode 面试题58 - I. 翻转单词顺序
剑指Offer LeetCode 面试题58 - I. 翻转单词顺序
25 0
|
9月前
每日刷题|回溯法解决全排列问题第二弹之解决字符串、字母大小排列问题
每日刷题|回溯法解决全排列问题第二弹之解决字符串、字母大小排列问题
|
10月前
|
容器
LeetCode-31 下一个排列
LeetCode-31 下一个排列
|
12月前
|
算法 安全 Swift
LeetCode - #60 排列序列
不积跬步,无以至千里;不积小流,无以成江海,Swift社区 伴你前行。如果大家有建议和意见欢迎在文末留言,我们会尽力满足大家的需求。
剑指offer 39. 数字排列
剑指offer 39. 数字排列
60 0
|
算法 容器
LeetCode 31. 下一个排列
LeetCode 31. 下一个排列
90 0
LeetCode 31. 下一个排列
|
算法 Java C++