【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
相关推荐
C雨后彩虹40 分钟前
任务最优调度
java·数据结构·算法·华为·面试
少林码僧3 小时前
2.31 机器学习神器项目实战:如何在真实项目中应用XGBoost等算法
人工智能·python·算法·机器学习·ai·数据挖掘
钱彬 (Qian Bin)3 小时前
项目实践15—全球证件智能识别系统(切换为Qwen3-VL-8B-Instruct图文多模态大模型)
人工智能·算法·机器学习·多模态·全球证件识别
Niuguangshuo3 小时前
EM算法详解:解密“鸡生蛋“的机器学习困局
算法·机器学习·概率论
a3158238063 小时前
Android 大图显示策略优化显示(一)
android·算法·图片加载·大图片
一条大祥脚4 小时前
26.1.9 轮廓线dp 状压最短路 构造
数据结构·c++·算法
鲨莎分不晴4 小时前
反向传播的数学本质:链式法则与动态规划的完美共舞
算法·动态规划
sonadorje4 小时前
逻辑回归中的条件概率
算法·机器学习·逻辑回归
cici158744 小时前
基于Pan-Tompkins算法的ECG信号HRV提取方案
算法
McGrady-1754 小时前
拓扑导航 vs 几何导航的具体实现位置
算法