【LeetCode】LCR139.训练计划I
- IT业界
- 2025-08-29 05:39:01

题目
教练使用整数数组 actions 记录一系列核心肌群训练项目编号。为增强训练趣味性,需要将所有奇数编号训练项目调整至偶数编号训练项目之前。请将调整后的训练项目编号以 数组 形式返回。
示例 1:
输入:actions = [1,2,3,4,5] 输出:[1,3,5,2,4] 解释:为正确答案之一
提示:
0 <= actions.length <= 50000 0 <= actions[i] <= 10000
题解
本题目考虑定义双指针解决。指针 i,j 分列数组左右两端,循环执行:
指针i从左向右寻找偶数;指针j从右向左寻找奇数;将偶数actions[i]和 奇数actions[j]交换。这样可始终保证: 指针 i 左边都是奇数,指针 j 右边都是偶数 。
通过对2取余可判断是不是奇数,此处可以使用位运算来快速取余 actions[i] & 1。
class Solution(object): def trainingPlan(self, actions): """ :type actions: List[int] :rtype: List[int] """ i,j = 0, len(actions) - 1 while i < j: while i < j and actions[i] % 2 == 1: i += 1 while i < j and actions[j] % 2 == 0: j -= 1 actions[i], actions[j] = actions[j], actions[i] return actions 时间复杂度O(N): N为数组actions长度,双指针i,j共同遍历整个数组。空间复杂度O(1):双指针i,j使用常数大小的额外空间。 Reference leetcode /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】LCR139.训练计划I由讯客互联IT业界栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“【LeetCode】LCR139.训练计划I”