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 相关文章推荐
Python中输出ASCII大文字、艺术字、字符字小技巧
Apr 28 Python
Python 基础知识之字符串处理
Jan 06 Python
python3实现ftp服务功能(服务端 For Linux)
Mar 24 Python
Python双向循环链表实现方法分析
Jul 30 Python
Pandas Shift函数的基础入门学习笔记
Nov 16 Python
pytorch对可变长度序列的处理方法详解
Dec 08 Python
Python OpenCV之图片缩放的实现(cv2.resize)
Jun 28 Python
python使用 zip 同时迭代多个序列示例
Jul 06 Python
Python集合基本概念与相关操作实例分析
Oct 30 Python
详解Tensorflow不同版本要求与CUDA及CUDNN版本对应关系
Aug 04 Python
关于探究python中sys.argv时遇到的问题详解
Feb 23 Python
python使用pygame创建精灵Sprite
Apr 06 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中的Trait 特性及作用
2016/04/03 PHP
Yii统计不同类型邮箱数量的方法
2016/10/18 PHP
PHP调用其他文件中的类
2018/04/02 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
2019/12/01 PHP
PHPStorm 2020.1 调试 Nodejs的多种方法详解
2020/09/17 NodeJs
php中Swoole的热更新实现代码实例
2021/03/04 PHP
动手学习无线电
2021/03/10 无线电
ExtJS 2.2.1的grid控件在ie6中的显示问题
2009/05/04 Javascript
让div层随鼠标移动的实现代码 ie ff
2009/12/18 Javascript
Ubuntu 11.10 安装Node.js的方法
2011/11/30 Javascript
javascript控制在光标位置插入文字适合表情的插入
2014/06/09 Javascript
javascript函数命名的三种方式及区别介绍
2016/03/22 Javascript
vue2.0 子组件改变props值,并向父组件传值的方法
2018/03/01 Javascript
JavaScript常用截取字符串的三种方式用法区别实例解析
2018/05/15 Javascript
Node 升级到最新稳定版的方法分享
2018/05/17 Javascript
使用wxapp-img-loader自定义组件实现微信小程序图片预加载功能
2018/10/18 Javascript
微信小程序学习笔记之函数定义、页面渲染图文详解
2019/03/28 Javascript
Vue组件内部实现一个双向数据绑定的实例代码
2019/04/04 Javascript
JS数组方法slice()用法实例分析
2020/01/18 Javascript
解决vue一个页面中复用同一个echarts组件的问题
2020/07/19 Javascript
[58:09]Spirit vs NB Supermajor小组赛 A组败者组决赛 BO3 第三场 6.2
2018/06/03 DOTA
Flask入门教程实例:搭建一个静态博客
2015/03/27 Python
python实现爬虫下载美女图片
2015/07/14 Python
栈和队列数据结构的基本概念及其相关的Python实现
2015/08/24 Python
举例讲解Python中metaclass元类的创建与使用
2016/06/30 Python
轻松实现TensorFlow微信跳一跳的AI
2018/01/05 Python
详解Python Matplot中文显示完美解决方案
2019/03/07 Python
浅谈python编译pyc工程--导包问题解决
2019/03/20 Python
Pytest框架之fixture的详细使用教程
2020/04/07 Python
碧欧泉美国官网:Biotherm美国
2016/08/31 全球购物
设计大赛策划方案
2014/06/13 职场文书
年度安全生产目标责任书
2014/07/23 职场文书
学生上课看漫画的检讨书
2014/09/26 职场文书
小学教育见习总结
2015/06/23 职场文书
Java练习之潜艇小游戏的实现
2022/03/16 Java/Android
解决springboot druid数据库连接失败后一直重连的方法
2022/04/19 Java/Android