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

leetcode——轮转数组(java)

给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。

示例 1:

输入: nums = [1,2,3,4,5,6,7], k = 3
输出: [5,6,7,1,2,3,4]
解释:
向右轮转 1 步: [7,1,2,3,4,5,6]
向右轮转 2 步: [6,7,1,2,3,4,5]
向右轮转 3 步: [5,6,7,1,2,3,4]

示例 2:

输入:nums = [-1,-100,3,99], k = 2
输出:[3,99,-1,-100]
解释: 
向右轮转 1 步: [99,-1,-100,3]
向右轮转 2 步: [3,99,-1,-100]

解题方法:(双指针+排序)

1.经分析得出我们可以使用双指针与排序来进行解题,首先我们先写一个辅助函数来交换双指针指向的元素。

2.首先我们需要将数组逆序排序,然后我们再将前k个元素逆序排序,然后将剩下的元素逆序排序。

class Solution {
    public void rotate(int[] nums, int k) {
        int n = nums.length;
        k %= n;
        reverse(nums, 0, n - 1);
        reverse(nums, 0, k - 1);
        reverse(nums, k, n - 1);
    }
    private void reverse(int[] nums, int i, int j) {
        while(i < j) {
            int temp = nums[i];
            nums[i++] = nums[j];
            nums[j--] = temp;
        }
    }
}


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

相关文章:

  • 生成对抗网络(GAN)入门与编程实现
  • 学生管理系统C++版(简单版)详解
  • Django 的 `Meta` 类和外键的使用
  • 【重庆市乡镇界】面图层shp格式arcgis数据乡镇名称和编码wgs84坐标无偏移内容测评
  • 项目中使用的是 FastJSON(com.alibaba:fastjson)JSON库
  • C++ 类与对象(上)
  • leetcode_字符串 409. 最长回文串
  • 什么是IP地址、子网掩码、网关、DNS
  • AI刷题-策略大师:小I与小W的数字猜谜挑战
  • Matlab 亥姆霍兹谐振器的吸声特性
  • 【机器学习应用】预处理与特征工程
  • 【PCL】Segmentation 模块—— 条件欧几里得聚类(Conditional Euclidean Clustering)
  • Redis vs. 其他数据库:深度解析,如何选择最适合的数据库?
  • cuda + cudnn安装
  • C语言 指针_野指针 指针运算
  • 【AI日志分析】基于机器学习的异常检测:告别传统规则的智能进阶
  • 算法7(力扣141)-循环链表
  • 固件测试工具选型需要考察的功能点汇总
  • springboot设置多环境配置文件
  • 【2024年 CSDN博客之星】我的2024年创作之旅:从C语言到人工智能,个人成长与突破的全景回顾
  • 【Python】面对对象超全总结:封装,继承,多态
  • 修改word的作者 最后一次保存者 总编辑时间 创建时间 最后一次保存的日期
  • 白玉微瑕:闲谈 SwiftUI 过渡(Transition)动画的“口是心非”(下)
  • 无人机 PX4 飞控 | PX4源码添加自定义参数方法并用QGC显示与调整
  • 使用EVE-NG-锐捷实现静态路由
  • jvm_threads_live_threads 和 jvm_threads_states_threads 这两个指标之间存在一定的关系,但它们关注的维度不同