【LeetCode】LCR 139. 训练计划 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

python 复制代码
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

  1. 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
相关推荐
dragoooon3411 小时前
[C++——lesson29.数据结构进阶——「AVL树」]
算法
碧海银沙音频科技研究院11 小时前
论文写作word插入公式显示灰色解决办法
人工智能·深度学习·算法
长沙京卓11 小时前
【无人机算法】低空经济下无人机巡检检测识别算法(城市、林业、水利)
算法·无人机
hn小菜鸡11 小时前
LeetCode 1971.寻找图中是否存在路径
算法·leetcode·职场和发展
Han.miracle11 小时前
数据结构与算法--007三数之和(medium)
算法·leetcode·排序算法
听风吹等浪起12 小时前
机器学习算法:随机梯度下降算法
人工智能·深度学习·算法·机器学习
落羽的落羽12 小时前
【C++】哈希扩展——位图和布隆过滤器的介绍与实现
linux·服务器·开发语言·c++·人工智能·算法·机器学习
仁桃仁呀12 小时前
160.相交链表
数据结构·算法·链表
普密斯科技12 小时前
从点测量到解决方案:光谱共焦技术如何集成于运动平台,实现3D轮廓扫描与透明物体测厚?
人工智能·算法·计算机视觉·3d·集成测试·测量
fish_xk12 小时前
类和对象(二)
开发语言·c++·算法