LeetCode189轮转数组python示例


Posted in Python onAugust 05, 2022

1.题目

给你一个数组,将数组中的元素向右轮转 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 <= nums.length <= 105
-231 <= nums[i] <= 231 - 1
0 <= k <= 105

2.知识点

  • 使用额外的数组
  • 我们可以使用额外的数组来将每个元素放至正确的位置。用 n表示数组的长度,我们遍历原数组,将原数组下标为 i的元素放至新数组下标为 (i+k) mod n 的位置,最后将新数组拷贝至原数组即可。

3.代码

3.1 arraycopy方法解析

@param src源数组。
 @param srcPos在源数组中的起始位置。
 @param dest目标数组。
 @param destPos在目标数据中的起始位置。
 @param length要复制的数组元素的数量。
 
arraycopy(Object src,  int  srcPos, Object dest, int destPos, int length);

3.2 scala代码

def rotate4(nums:Array[Int],k:Int):Unit = {
    val n: Int = nums.length
    val newArr = new Array[Int](n)
    for(i<-0 to n-1){
      newArr((i+k)%n) = nums(i)
    }
    System.arraycopy(newArr,0,nums,0,n)
    import java.util.Arrays
    println(Arrays.toString(nums))
  }

3.3.java代码

class Solution {
    public void rotate(int[] nums, int k) {
        int n = nums.length;
        int[] newArr = new int[n];
        for (int i = 0; i < n; ++i) {
            newArr[(i + k) % n] = nums[i];
        }
        System.arraycopy(newArr, 0, nums, 0, n);
    }
}

3.4 复杂度分析

  • 时间复杂度: O(n),其中 n 为数组的长度。
  • 空间复杂度: O(n)。

以上就是LeetCode189轮转数组python示例的详细内容,更多关于轮转数组python示例的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Flask入门教程实例:搭建一个静态博客
Mar 27 Python
Python变量作用范围实例分析
Jul 07 Python
Python三级目录展示的实现方法
Sep 28 Python
使用Python的Dataframe取两列时间值相差一年的所有行方法
Jul 10 Python
一百多行python代码实现抢票助手
Sep 25 Python
使用Python的toolz库开始函数式编程的方法
Nov 15 Python
Python3爬虫学习之MySQL数据库存储爬取的信息详解
Dec 12 Python
实例详解Python模块decimal
Jun 26 Python
Python大数据之使用lxml库解析html网页文件示例
Nov 16 Python
Python的pygame安装教程详解
Feb 10 Python
python的reverse函数翻转结果为None的问题
May 11 Python
解决pycharm下载库时出现Failed to install package的问题
Sep 04 Python
python语言中pandas字符串分割str.split()函数
Aug 05 #Python
python绘制云雨图raincloud plot
Aug 05 #Python
python计算列表元素与乘积详情
Aug 05 #Python
Pygame游戏开发之太空射击实战敌人精灵篇
Aug 05 #Python
python playwrigh框架入门安装使用
Jul 23 #Python
python playwright之元素定位示例详解
Jul 23 #Python
Sentry的安装、配置、使用教程(Sentry日志手机系统)
Jul 23 #Python
You might like
关于php支持分块与断点续传文件下载功能代码
2014/05/09 PHP
php字符串过滤与替换小结
2015/01/26 PHP
解决nginx不支持thinkphp中pathinfo的问题
2015/07/21 PHP
php源码 fsockopen获取网页内容实例详解
2016/09/24 PHP
PHP实现的下载远程文件类定义与用法示例
2017/07/05 PHP
jQuery 学习第六课 实现一个Ajax的TreeView
2010/05/17 Javascript
jquery中ajax学习笔记一
2011/10/16 Javascript
Javascript面向对象扩展库代码分享
2012/03/27 Javascript
js特殊字符转义介绍
2013/11/05 Javascript
jquery validate添加自定义验证规则(验证邮箱 邮政编码)
2013/12/04 Javascript
js类定义函数时用prototype与不用的区别示例介绍
2014/06/10 Javascript
百度地图api如何使用
2015/08/03 Javascript
jQuery实现图片文字淡入淡出效果
2015/12/21 Javascript
全面详细的jQuery常见开发技巧手册
2016/02/21 Javascript
Nodejs中使用captchapng模块生成图片验证码
2017/05/18 NodeJs
使用jquery+iframe做一个ajax上传效果(实例)
2017/08/24 jQuery
JavaScript登录验证基础教程
2017/11/01 Javascript
解决Webpack 热部署检测不到文件变化的问题
2018/02/22 Javascript
基于Vue-Cli 打包自动生成/抽离相关配置文件的实现方法
2018/12/09 Javascript
element-ui中按需引入的实现
2019/12/25 Javascript
vue3弹出层V3Popup实例详解
2021/01/04 Vue.js
[00:08]DOTA2勇士令状等级奖励“天外飞星”
2019/05/24 DOTA
Python实现简单的多任务mysql转xml的方法
2017/02/08 Python
Random 在 Python 中的使用方法
2018/08/09 Python
Python可视化mhd格式和raw格式的医学图像并保存的方法
2019/01/24 Python
Python面向对象程序设计构造函数和析构函数用法分析
2019/04/12 Python
python实现倒计时小工具
2019/07/29 Python
对pytorch的函数中的group参数的作用介绍
2020/02/18 Python
Python递归函数特点及原理解析
2020/03/04 Python
HTML5 Web缓存和运用程序缓存(cookie,session)
2018/01/11 HTML / CSS
Nanushka官网:匈牙利服装品牌
2019/08/14 全球购物
求高于平均分的学生学号及成绩
2016/09/01 面试题
求职自荐信格式
2013/12/04 职场文书
研究生考核个人自我鉴定
2014/03/27 职场文书
2014年学习部工作总结
2014/11/12 职场文书
校本课程教学计划
2015/01/19 职场文书