目录
- 题目
- 过程
- 解法
- 双指针法(两端开始)
- 快慢指针
题目
教练使用整数数组 actions 记录一系列核心肌群训练项目编号。为增强训练趣味性,需要将所有奇数编号训练项目调整至偶数编号训练项目之前。请将调整后的训练项目编号以 数组 形式返回。
过程
滑动窗口
解法
双指针法(两端开始)
class Solution {
public:vector<int> trainingPlan(vector<int>& actions){int i = 0, j = actions.size() - 1;while (i < j){while(i < j && (actions[i] & 1) == 1) i++;while(i < j && (actions[j] & 1) == 0) j--;swap(actions[i], actions[j]);}return actions;}
};作者:Krahets
链接:https://leetcode.cn/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/solutions/115087/mian-shi-ti-21-diao-zheng-shu-zu-shun-xu-shi-qi-4/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
快慢指针
class Solution {public int[] exchange(int[] nums) {int slow = 0,fast = 0;while(fast<nums.length){if((nums[fast]&1)==1) swap(nums,slow++,fast);fast++;}return nums;}public void swap(int[] nums,int a,int b){int temp = nums[a];nums[a] = nums[b];nums[b] =temp;return;}
}
快慢指针比首尾指针更快一些,快慢指针有点和滑动窗口像,都是中间的子数组。