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

Leetcode 189 轮转数组

leetcode 189 轮转数组

题目

给定一个整数数组 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]

https://leetcode.cn/problems/rotate-array/description/

解法一

思路:创建新数组,依次拷贝原数组的元素到新数组,注意下标的转换
时间复杂度:遍历两次,O(n)
空间复杂度:使用了新数组res,O(n)

class Solution {public void rotate(int[] nums, int k) {// 方法1:新数组,保存到新数组的正确位置// i -> (i+k)%nint n = nums.length;int[] res = new int[n];for (int i = 0; i < n; i++) {res[(i+k)%n] = nums[i];}for (int j = 0; j < n; j++) {nums[j] = res[j];}}  
}

解法二

思路:三次翻转
时间复杂度:三次翻转一共2N次,时间复杂度O(n)
空间复杂度:没有使用额外数组,O(1)

class Solution {public void rotate(int[] nums, int k) {// 方法二:假设数组长度为n,按照下面步骤紧张翻转:// 全部数组轮转 [0, n-1],[1234567]->[7654321]// 前半部分翻转:[0, k-1], [7654321]->[5674321]// 后半部分翻转:[k, n-1], [5674321]->[5671234]int n = nums.length;k = k % n;reverse(nums, 0, n-1);reverse(nums, 0, k-1);reverse(nums, k, n-1);}void reverse(int[] nums, int start, int end) {while (start < end) {int temp = nums[start];nums[start] = nums[end];nums[end] = temp;start++;end--;}}}
http://www.lryc.cn/news/523975.html

相关文章:

  • 华为服务器(iBMC)监控指标解读
  • 网络编程-UDP套接字
  • Web 音视频(一)基础知识
  • 数字化时代,传统代理模式的变革之路
  • Linux 高级路由与流量控制-用 tc qdisc 管理 Linux 网络带宽
  • 【数据库知识】PostgreSQL介绍
  • 软考,沟通管理
  • Linux 存储设备和 Ventoy 启动盘制作指南
  • Android SystemUI——CarSystemBar车载状态栏(九)
  • 多级缓存 JVM进程缓存
  • 使用Chrome和Selenium实现对Superset等私域网站的截图
  • 如何让大语言模型更好地理解科学文献?
  • anaconda安装和环境配置
  • Python基础学习(五)文件和异常
  • Mono里运行C#脚本29—mono_trampolines_init
  • 从语音识别到图像识别:AI如何“看”和“听”
  • vue3+ts+uniapp 微信小程序(第一篇)—— 微信小程序定位授权,位置信息权限授权
  • 回归算法、聚类算法、决策树、随机森林、神经网络
  • [Qt]系统相关-文件操作-QFile、QFileInfo类以及相关操作函数
  • C#高级:用Csharp操作鼠标和键盘
  • Mac 使用 GVM 管理多版本 Go 环境
  • 25届合肥工业大学自动化考研复试攻略
  • 【24】Word:小郑-准考证❗
  • 前瞻2024:前沿技术的全景洞察与深度剖析
  • 告别手动编辑:如何用Python快速创建Ansible hosts文件?
  • ESP32云开发二( http + led + lcd)
  • Java 基于微信小程序的原创音乐小程序设计与实现(附源码,部署,文档)
  • JavaWeb开发(十五)实战-生鲜后台管理系统(二)注册、登录、记住密码
  • 在stm32中C语言编写的程序中,一个整形数据是怎么存储的,高位在前还是低位在前
  • Redis系列之底层数据结构字典Dict