牛客网上的题目还有一个额外的要求,就是不改变数组原始的前后数据,这种可以用队列来存储,或者把前后比较变为相邻的元素比较。
这个题目,主要要考察扩展性,用func函数就实现了扩展性。只需要改func函数,就可以实现负数移动到非负数前面,被3整除的数移到不能被3整除的数的前面
class Solution { public: void reOrderArray(vector<int> &array) { int length = array.size(); if(length <= 0) return; int start = 0; int end = length - 1; while(start < end){ while(func(array[start])) start++; while(!func(array[end])) end--; if(start < end){ int tmp = array[start]; array[start] = array[end]; array[end] = tmp; } } } static bool func(int number){ if(number & 0x1) return true; else return false; } };
这个题主要是将数组前后进行比较
原文:https://www.cnblogs.com/ymjyqsx/p/9519897.html