|
亲!马上注册或者登录会查看更多内容!
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
关于Almost Sorted Array, 有一个case没过,请问下哪里有Bug.
代码:
- #include <algorithm>
- class Solution {
- public:
- bool isReversed(vector<int>& a, int start, int end) {
- for (int k = end; k > start; --k) {
- if (a[k - 1] < a[k])
- return false;
- }
- return true;
- }
-
- bool isSorted(vector<int>& a, int start, int end) {
- for (int k = start; k < end; ++k) {
- if (a[k] > a[k + 1])
- return false;
- }
- return true;
- }
-
- bool isAlmostSorted(vector<int> &a) {
- if (a.size() < 2) return true;
- int i, j;
- for (i = 0; i + 1 < a.size(); ++i) {
- if (a【i】 > a[i + 1])
- break;
- }
- if (i + 1 == a.size()) return true;
- for (j = a.size() - 1; j > 0; --j) {
- if (a[j - 1] > a[j])
- break;
- }
- // if ((i > 0 && a[i - 1] > a[j]) || (j < a.size() - 1 && a【i】 > a[j + 1]))
- // return false;
- if (isReversed(a, i, j))
- return true;
- std::swap(a【i】, a[j]);
- return isSorted(a, i, j);
- }
- };
复制代码
谢谢。 |
|