有趣的排序
来源:互联网 发布:snmp网络管理框架 编辑:程序博客网 时间:2024/05/16 04:18
百度笔试
1、问题描述
度度熊有一个N个数的数组,他想将数组从小到大排好序,但是度度熊只会:任取数组的一个数放置到最后。问最少操作多少次可以使得数组从小到大有序
输入描述:
首先输入一个正整数N,接下来的一行输入N个整数。(N<=50,每个数绝对值小于等于1000)
输出描述:
输出一个整数表示最少操作次数。
输入:
419 7 8 25
输出:
2
2、分析
正向思路可以将原序列中排列相对位置不对长度计算出即可,但似乎实现略难。
反向思考,找出原序列中可以作为排序后前缀的长度,然后n减去此长度即可。
前缀长度即不需要动的元素,可将原序列进行排序,将排序后的序列与原序列对比,从排序后最小开始,符合,新旧同时序列下标后移;不符合,只移动旧序列下标。直到将原序列对比完成,当前新序列下标即不需要移动的原序列元素长度。
3、步骤
1)输入参数
2)序列排序
3)原序列依次从排序后序列最小开始对比
4)对比完成,输出n减去当前下标
4、实现代码
#include <bits/stdc++.h>using namespace std;vector <int> x;int solve(vector <int> a){vector <int> b;b=a;sort(b.begin(),b.end());//排序int q,n=a.size()-1;q=-1;for(int i=0;i<=n;i++){if(a[i]==b[q+1]){//从0下标开始对比q++;//q为不需要移动的长度}}return n-q;}int main(){int n;cin>>n;for(int i=0;i<n;i++){int tmp;cin>>tmp;x.push_back(tmp);}cout<<solve(x)<<endl;return 0;}
阅读全文
1 0
- 有趣的一种排序
- 几个有趣的排序
- 牛客网 有趣的排序
- 有趣的排序
- 【百度】有趣的排序
- c++有趣的排序
- [百度]有趣的排序
- 有趣的排序
- 有趣的排序
- 有趣的排序
- 有趣的排序-百度-排序
- 有趣直观的排序算法
- 有趣的冒泡排序实现
- 冒泡排序的有趣使用
- [编程题] 有趣的排序
- 【算法题】有趣的排序
- 校招真题 百度 有趣的排序
- 一个有趣的排序算法视频
- 运算符
- linux-mysql Access denied for user 'root'@'localhost'
- HDU2149 Public Sale(巴什博奕)
- 项目代码报:The method xx方法( ) is undefined for the type XX类
- 2.正确使用Less
- 有趣的排序
- 谷歌AVA数据库的1705.08421论文(5)
- vim撤销命令
- 公告!!! 看这里 (o°ω°o)
- 不等式数列
- VS2017 Xamarin.IOS windows环境搭建
- 剑指Offer面试题14:剪绳子 Java代码实现
- 第五周项目一C/C++数据结构之自建算法库——顺序栈
- 卡在Starting kernel...的原因分析