当前位置: 首页 > article >正文

LCR 139.训练计划 I

目录

  • 题目
  • 过程
  • 解法
    • 双指针法(两端开始)
    • 快慢指针

题目

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

过程

滑动窗口

解法

双指针法(两端开始)

class Solution {
public:
    vector<int> trainingPlan(vector<int>& actions)
    {
        int i = 0, j = actions.size() - 1;
        while (i < j)
        {
            while(i < j && (actions[i] & 1) == 1) i++;
            while(i < j && (actions[j] & 1) == 0) j--;
            swap(actions[i], actions[j]);
        }
        return actions;
    }
};

作者:Krahets
链接: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/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

快慢指针

在这里插入图片描述

class Solution {
    public int[] exchange(int[] nums) {
        int slow = 0,fast = 0;
        while(fast<nums.length){
            if((nums[fast]&1)==1) swap(nums,slow++,fast);
            fast++;
        }
        return nums;
    }

    public void swap(int[] nums,int a,int b){
        int temp = nums[a];
        nums[a] = nums[b];
        nums[b] =temp;
        return;
    }
}

快慢指针比首尾指针更快一些,快慢指针有点和滑动窗口像,都是中间的子数组。
在这里插入图片描述


http://www.kler.cn/a/525237.html

相关文章:

  • doris:异常数据处理
  • 计算机网络 (60)蜂窝移动通信网
  • 【信息系统项目管理师-选择真题】2007下半年综合知识答案和详解
  • vulfocus/thinkphp:6.0.12 命令执行
  • Rust语言进阶之zip用法实例(九十五)
  • 【Linux笔记】Day4
  • 使用Java提取Word文档表格数据
  • 论文阅读(十四):贝叶斯网络在全基因组DNA甲基化研究中的应用
  • java 正则表达式匹配Matcher 类
  • C# Dynamic关键字
  • 东方博宜25年1月-B组(才俊)- 农田作物
  • Kafka的内部通信协议
  • 什么是心跳
  • 怎么样控制API的访问速率,防止API被滥用?
  • 动态规划DP 最长上升子序列模型 最长上升子序列(题目分析+C++完整代码)
  • Android NDK
  • “AI视频智能分析系统:让每一帧视频都充满智慧
  • 寻找旋转数组中的最小元素:C语言实现与分析
  • SSM开发(七) MyBatis解决实体类(model)的字段名和数据库表的列名不一致方法总结(四种方法)
  • Baklib引领企业内容中台建设的新思路与应用案例
  • 更新被联想限制更新的intel集成显卡UHD 630驱动,想让老显卡也支持到4K显示器
  • pandas(一)创建文件、写入数据
  • Brave132 编译指南 Windows 篇:获取源码(六)
  • Git进阶之旅:Git 配置信息 Config
  • Mybatis是如何进行分页的?
  • Vue.js 什么是 Composition API?