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函数中return后的语句一定不会执行吗?
Jul 06 Python
TF-IDF与余弦相似性的应用(一) 自动提取关键词
Dec 21 Python
python opencv检测目标颜色的实例讲解
Apr 02 Python
java中两个byte数组实现合并的示例
May 09 Python
mac安装scrapy并创建项目的实例讲解
Jun 13 Python
Python实现针对json中某个关键字段进行排序操作示例
Dec 25 Python
python使用opencv对图像mask处理的方法
Jul 05 Python
python3 assert 断言的使用详解 (区别于python2)
Nov 27 Python
Python找出列表中出现次数最多的元素三种方式
Feb 24 Python
Python super()函数使用及多重继承
May 06 Python
python三引号如何输入
Jul 06 Python
Python 中的Sympy详细使用
Aug 07 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中文分词 自动获取关键词介绍
2012/11/13 PHP
php set_time_limit()函数的使用详解
2013/06/05 PHP
php+jQuery.uploadify实现文件上传教程
2014/12/26 PHP
php生成rss类用法实例
2015/04/14 PHP
PHP判断文件是否被引入的方法get_included_files用法示例
2016/11/29 PHP
JavaScript实现页面滚动图片加载(仿lazyload效果)
2011/07/22 Javascript
Jquery 选中表格一列并对表格排序实现原理
2012/12/15 Javascript
js 实现菜单上下显示附效果图
2013/11/21 Javascript
jquery超简单实现手风琴效果的方法
2015/06/05 Javascript
分享jQuery封装好的一些常用操作
2016/07/28 Javascript
实现React单页应用的方法详解
2016/08/02 Javascript
微信小程序 时间格式化(util.formatTime(new Date))详解
2016/11/16 Javascript
JavaScript中数组Array方法详解
2017/02/27 Javascript
微信小程序 wx:for的使用实例详解
2017/04/27 Javascript
jQuery获取复选框选中的当前行的某个字段的值
2017/09/15 jQuery
详解基于electron制作一个node压缩图片的桌面应用
2019/01/29 Javascript
在微信小程序中使用图表的方法示例
2019/04/25 Javascript
Vue移动端项目实现使用手机预览调试操作
2020/07/18 Javascript
[04:39]显微镜下的DOTA2第十三期—Pis卡尔个人秀
2014/04/04 DOTA
详解Python中的__init__和__new__
2014/03/12 Python
Python判断列表是否已排序的各种方法及其性能分析
2016/06/20 Python
Python正则表达式经典入门教程
2017/05/22 Python
Python数据分析之双色球基于线性回归算法预测下期中奖结果示例
2018/02/08 Python
python更改已存在excel文件的方法
2018/05/03 Python
python3读取excel文件只提取某些行某些列的值方法
2018/07/10 Python
python字典值排序并取出前n个key值的方法
2018/10/17 Python
Python 堆叠柱状图绘制方法
2019/07/29 Python
python3 使用Opencv打开USB摄像头,配置1080P分辨率的操作
2019/12/11 Python
python实现逆滤波与维纳滤波示例
2020/02/26 Python
VS2019+python3.7+opencv4.1+tensorflow1.13配置详解
2020/04/16 Python
Python openpyxl 插入折线图实例
2020/04/17 Python
澳大利亚当地最大的时装生产商:Cue
2018/08/06 全球购物
乌克兰巴士票购买网站:inBus
2021/03/12 全球购物
公司合作意向书
2014/04/01 职场文书
2014年客房服务员工作总结
2014/11/18 职场文书
2015年仓库管理员工作总结
2015/04/21 职场文书