特殊的排序
一個陣列的元素為1至N的整數,現在要對這個陣列進行排序,在排序時只能將元素放在陣列的頭部或尾部,問至少需要移動多少個數字,才能完成整個排序過程?
例如:
2 5 3 4 1 將1移到頭部 =>
1 2 5 3 4 將5移到尾部 =>
1 2 3 4 5 這樣就排好了,移動了2個元素。
給出一個1-N的排列,輸出完成排序所需的最少移動次數。
Input
第1行:1個數N(2 <= N <= 50000)。 第2 - N + 1行:每行1個數,對應排列中的元素。
Output
輸出1個數,對應所需的最少移動次數。
Input示例
5 2 5 3 4 1
Output示例
2
#include <iostream>
#include <cstring>
using namespace std;
int input[50000];
int fun(int n)
{
int buf[n+1];
memset(buf, 0, sizeof(buf));
int result = 1;
for (int i = 0; i < n; i++)
{
if (buf[input[i]-1] > 0)
{
buf[input[i]] = buf[input[i]-1] + 1;
if (buf[input[i]] > result)
{
result = buf[input[i]];
}
}
else
{
buf[input[i]] = 1;
}
}
return result;
}
int main()
{
int n;
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> input[i];
}
cout << n - fun(n) << endl;
return 0;
}
相關文章
- 【NULLS】Oracle對SQL排序後NULL值位置的“特殊關照”NullOracleSQL排序
- 第三章:查詢與排序(下)----------- 3.28 特殊排序(利用sort函式)排序函式
- Bash的特殊字元字元
- html的特殊字元HTML字元
- 特殊需求的配置
- js的特殊結果JS
- 特殊的恢復操作
- JAVA中...的特殊用法。Java
- Perl 的特殊符號符號
- 文字中的特殊字元字元
- 特殊字元字元
- Shell命令列中的特殊字元及其轉義(去除特殊含義)命令列字元
- HTML 中的特殊符號HTML符號
- mysql insert的特殊用法MySql
- PlayMaker的特殊事件FINISHED事件
- C++ 中特殊的用法C++
- CSS中的特殊符號CSS符號
- 特殊字元的處理。。¥$$$字元
- SQL常用的特殊寫法SQL
- shell中的特殊符號符號
- O(lgn)的三種排序,快速排序、歸併排序、堆排序排序
- 計數排序的原址排序排序
- HTML特殊字元HTML字元
- 特殊IP地址
- perl 特殊字元字元
- 特殊符號符號
- 特殊表分析
- MySQL:一個特殊的問題MySql
- JS 中特殊的物件-陣列JS物件陣列
- react 渲染 html 特殊字元的bugReactHTML字元
- Python 中的特殊運算子Python
- 星號變數的特殊用法變數
- html中的常用特殊符號HTML符號
- url中的特殊字元問題字元
- Bash 中的特殊字元大全字元
- Windows中的特殊資料夾Windows
- python中的特殊方法使用Python
- DOM對映的特殊情況