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中的list列表及其切片和迭代操作
Mar 13 Python
通过python+selenium3实现浏览器刷简书文章阅读量
Dec 26 Python
在python中bool函数的取值方法
Nov 01 Python
Python设计模式之备忘录模式原理与用法详解
Jan 15 Python
python+django+rest框架配置创建方法
Aug 31 Python
python爬取Ajax动态加载网页过程解析
Sep 05 Python
python中的TCP(传输控制协议)用法实例分析
Nov 15 Python
python 两个一样的字符串用==结果为false问题的解决
Mar 12 Python
django ORM之values和annotate使用详解
May 19 Python
python判断正负数方式
Jun 03 Python
Django restful framework生成API文档过程详解
Nov 12 Python
详解matplotlib绘图样式(style)初探
Feb 03 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
laravel自定义分页效果
2017/07/23 PHP
tp5 sum某个字段相加得到总数的例子
2019/10/18 PHP
php获取是星期几的的一些常用姿势
2019/12/15 PHP
javascript 新浪背投广告实现代码
2009/07/07 Javascript
JavaScript访问样式表代码
2010/10/15 Javascript
给页面渲染时间加速 干掉Dom Level 0 Event
2012/12/19 Javascript
jquery图片切换插件
2015/03/16 Javascript
Jquery中巧用Ajax的beforeSend方法
2016/01/20 Javascript
不同js异步函数同步的实现方法
2016/05/28 Javascript
Bootstrap轮播图的使用和理解4
2016/12/14 Javascript
vue表单绑定实现多选框和下拉列表的实例
2017/08/12 Javascript
JS中的Replace()传入函数时的用法详解
2017/09/11 Javascript
Vue+element 解决浏览器自动填充记住的账号密码问题
2019/06/11 Javascript
微信小程序批量监听输入框对按钮样式进行控制的实现代码
2019/10/12 Javascript
封装一下vue中的axios示例代码详解
2020/02/16 Javascript
[01:05:56]2018DOTA2亚洲邀请赛3月29日 小组赛A组 Newbee VS VG
2018/03/30 DOTA
[56:48]FNATIC vs EG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
python使用点操作符访问字典(dict)数据的方法
2015/03/16 Python
利用Python中的pandas库对cdn日志进行分析详解
2017/03/07 Python
python 中文件输入输出及os模块对文件系统的操作方法
2018/08/27 Python
Python中的异常处理try/except/finally/raise用法分析
2019/02/28 Python
用Q-learning算法实现自动走迷宫机器人的方法示例
2019/06/03 Python
jupyter notebook 实现matplotlib图动态刷新
2020/04/22 Python
浅谈Python 参数与变量
2020/06/20 Python
Python命令行参数argv和argparse该如何使用
2021/02/08 Python
手工制作的意大利太阳镜和光学元件:Illesteva
2019/01/19 全球购物
一家外企的面试题目(C/C++面试题,C语言面试题)
2014/03/24 面试题
Linux面试题LINUX系统类
2014/11/19 面试题
创业者是否需要商业计划书?
2014/02/07 职场文书
2015新生加入学生会自荐书
2015/03/24 职场文书
关于成立领导小组的通知
2015/04/23 职场文书
小时代观后感
2015/06/10 职场文书
员工担保书范本
2015/09/22 职场文书
Python实战之实现简易的学生选课系统
2021/05/25 Python
Python实现将多张图片合成MP4视频并加入背景音乐
2022/04/28 Python
在虚拟机中安装windows server 2008的图文教程
2022/06/28 Servers