主页 > IT业界  > 

【LeetCode】LCR139.训练计划I

【LeetCode】LCR139.训练计划I
题目

教练使用整数数组 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