2017百度春招笔试题里面有一题是这样的:
度度熊有一个N个数的数组,他想将数组从小到大 排好序,但是萌萌的度度熊只会下面这个操作:
任取数组中的一个数然后将它放置在数组的最后一个位置。
问最少操作多少次可以使得数组从小到大有序?
这篇博客里面提供了解法:https://blog.csdn.net/weixin_39530880/article/details/82315709
2019年的2020浪潮秋招有一道笔试题是也差不多,不过要求可以拿出的数字放在最前面或者最后面。而且保证数组中没有重复数字。
我的解法如下(但是找不到哪里可以跑case,因此并没有试验过)。
#include <bits/stdc++.h>
using namespace std;
bool is_ordered(const list<int> &v) {
auto it1 = v.begin();
auto it2 = v.begin();
it2++;
while (it2 != v.end()) {
if (*it2 < *it1) {
return false;
}
it1++;
it2++;
}
return true;
}
int get_ans(list<int> &v) {
if (is_ordered(v)) {// 如果是有序的&#