LeetCode 面试题 峰与谷
在一个整数数组中,“峰”是大于或等于相邻整数的元素,相应地,“谷”是小于或等于相邻整数的元素。例如,在数组{5, 8, 4, 2, 3, 4, 6}中,{8, 6}是峰, {5, 2}是谷。现在给定一个整数数组,将该数组按峰与谷的交替顺序排序。
例:
输入: [5, 3, 1, 2, 3]
输出: [5, 1, 3, 2, 3]
思路:奇数为谷,偶数为峰 ,若i为峰则判断当前位置是否小于前一个位置(前一个为谷),若小于则交换,大于则不处理;若i为谷,则判断当前位置是否大于前一个位置(前一个为峰),若大于则交换,否则不处理。
代码:
class Soluction {
public:
void wiggleSort(vector<int> & nums){
for (int i = 1; i < nums.size(); i++) {
if (i % 2 == 0) {
if (nums[i] < nums[i-1]) {
swap(nums[i], nums[i - 1]);
}
}
else {
if (nums[i] > nums[i - 1]) {
swap(nums[i], nums[i - 1]);
}
}
}
}
};