【LeetCode】LCR 139. 训练计划 I

题目

教练使用整数数组 actions 记录一系列核心肌群训练项目编号。为增强训练趣味性,需要将所有奇数编号训练项目调整至偶数编号训练项目之前。请将调整后的训练项目编号以 数组 形式返回。

示例 1:

输入:actions = 1,2,3,4,5

输出:1,3,5,2,4

解释:为正确答案之一

提示:

0 <= actions.length <= 50000

0 <= actionsi <= 10000


题解

本题目考虑定义双指针解决。指针 i,j 分列数组左右两端,循环执行:

  • 指针i从左向右寻找偶数;
  • 指针j从右向左寻找奇数;
  • 将偶数actionsi和 奇数actionsj交换。

这样可始终保证: 指针 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
相关推荐
wabs6664 小时前
关于图论【卡码网117.软件构建的思考】
数据结构·算法·软件构建·图论·卡码网
mifengxing5 小时前
LeetCode 41.缺失的第一个正数|Hard题O(n)+O(1)最优解法深度解析
java·算法·leetcode·排序算法
Tongzhi20265 小时前
从部署到运维:通芝科技无感考勤一体机的全流程效率解析
运维·数据结构·科技·算法·贪心算法
Wang's Blog6 小时前
AI Agent白手起家30: 动态示例选择器之根据长度选择 Few Shot 示例
算法
oyguyteggytrrwwwrt7 小时前
自制交叉线路识别算法
算法
手写码匠7 小时前
华为云Flexus+DeepSeek征文|Dify 多智能体协同编排实战:R1 规划 + V3 执行,构建企业 Agent 团队
人工智能·深度学习·算法·aigc
城管不管8 小时前
第六次面试2026.8.5北京一面已OC
面试·职场和发展
晓天衡宇•评测社区8 小时前
FSR-Bench 前沿科学推理榜单发布:GPT-5.5 居首,“会推理”未必“能答对”
算法
程序喵大人10 小时前
【C++进阶】STL算法与函数对象 - 02 sort为什么需要随机访问迭代器
开发语言·c++·算法
hanlin0310 小时前
动态规划专练:力扣第121、122题
笔记·算法·leetcode