`

Rotate Array

阅读更多
Rotate an array of n elements to the right by k steps.

For example, with n = 7 and k = 3, the array [1,2,3,4,5,6,7] is rotated to [5,6,7,1,2,3,4].

将一个数组右移k步,如果我们直接移动k次,会超时。我们可以先反转后k个元素,然后在反转前length - k个元素,最后将整个数组反转,就得到了结果。k在运算的时候要先于数组取模,因为k可能大于数组的长度。代码如下:
public class Solution {
    public void rotate(int[] nums, int k) {
        if(nums == null) return;
        k %= nums.length;
        reverse(nums, 0, nums.length - k);
        reverse(nums, nums.length - k, nums.length);
        reverse(nums, 0, nums.length);
    }
    public void reverse(int[] nums, int start, int end) {
        while(start < end) {
            int tem = nums[start];
            nums[start++] = nums[--end];
            nums[end] = tem;
        }
    }
    
}

分享到:
评论

相关推荐

    Coding Interview In Java

    1 Rotate Array in Java 15 2 Reverse Words in a String II 19 3 Evaluate Reverse Polish Notation 21 4 Isomorphic Strings 25 5 Word Ladder 27 6 Word Ladder II 29 7 Median of Two Sorted Arrays 33 8 Kth ...

    LeetCode题解(java语言实现).pdf

    * Rotate Array in Java:该题目要求将数组旋转一定的次数,实现方法使用了循环移位的方法。 * Evaluate Reverse Polish Notation:该题目要求对逆波兰表示法的字符串进行求值,实现方法使用了栈的数据结构。 * ...

    LeetCode题解 - Java语言实现-181页.pdf

    1. Rotate Array in Java 数组旋转是一个基本的数组操作,要求将数组中的元素旋转一定的位置。这种操作可以使用Java的System.arraycopy()方法或手动循环实现。 2. Evaluate Reverse Polish Notation 逆波兰表示法...

    array-rotate:将数组旋转 n 个位置

    $ npm install --save array-rotate 用法 var rotateArray = require ( 'array-rotate' ) ; var arr = rotateArray . createArray ( 1 , 2 , 3 , 4 , 5 , 6 ) ; var positionToRotate = 2 ; var newArr = ...

    Coding Interview in Java

    17. 反转问题:如Rotate Array in Java(在Java中旋转数组),反转数组或字符串的某一部分。 18. 动态规划高级问题:比如Word Ladder(单词梯度),寻找从一个单词到另一个单词变化的最短路径。 19. 高级数据结构...

    leetcode答案-LeetCode:LeetCode刷题记录,README显示实时进度/题目

    189.rotate-array.js /* * @lc app=leetcode id=189 lang=javascript * * [189] Rotate Array * * https://leetcode.com/problems/rotate-array/description/ * * algorithms * Easy (28.74%) * Total Accepted: 262...

    Leetcode部分试题解析

    23. **Rotate Array**:将数组顺时针旋转指定步数。可以先反转整个数组,再反转前半部分和后半部分。 24. **Summary Ranges**:将连续的数字范围合并。这可以通过迭代数组并跟踪当前范围来实现。 25. **Reverse ...

    LeetCode最全代码

    ## Array | # | Title | Solution | Time | Space | Difficulty | Tag | Note| |-----|---------------- | --------------- | --------------- | --------------- | ------------- |--------------|-----| 15 | [3 ...

    LeetCodeProject.zip

    6. 旋转数组的最小数字(Rotate Array):涉及到数组的旋转操作,可以利用一次反转来完成。 7. 整数反转(Reverse Integer):通过位运算实现整数的翻转,需要注意溢出问题。 8. 字符串到整数(atoi)(String to ...

    Algorithm-Concepts:此存储库包含计算机科学领域中使用的一些核心算法和数据结构的代码

    算法概念和算法课程。4.1 数组。... Algorithm to rotate array of size 'n' by 'd' elements6. Algorithm to segregate 0's and 1's in an array7. Find the maximum difference between two elemen

    leetcode浇花-LCSolutions:我的力扣解决方案

    leetcode 浇花力扣解决方案 简单的 #0001 - Two Sum ...Rotate Array #0217 - Contains Duplicate #0242 - Valid Anagram #0243 - Shortest Word Distance #0246 - Strobogrammatic Number #0263 -

    扔鸡蛋leetcode-LeetCode-Note-Mary:玛丽的leetcode笔记本

    Rotate Array (旋转数组) #数组 33. Search in Rotated Sorted Array(搜索旋转排序数组)#数组 2020/12/08 19. Remove Nth Node From End of List(删除链表的倒数第N个节点) 153. Find Minimum in Rotated Sorted...

    C语言 strcpy和memcpy区别详细介绍

    PS:初学算法,开始刷leetcode,Rotate array的预备知识(写的代码Time Limit Exceed难过)于是百度高效算法,本篇作为预备知识。 1、strcpy和strncpy函数 这个不陌生,大一学C语言讲过,其一般形式为strcpy(字符...

    leetcode添加元素使和等于-LeetCodeNotes:力码笔记

    Rotate Array 描述:数组向右旋转k个位置 思路:见编程珠玑2.3节 414. Third Maximum Number 描述:找出int[] A里第三大的元素,如不存在返回最大元素 思路:不用排序不用去重的解法,维护三个变量x1, x2, x3,遍

    Xilinx cordic Rotate 工程文件

    Xilinx Cordic Rotate工程文件,是基于FPGA(Field Programmable Gate Array)技术,利用Cordic(Coordinate Rotation Digital Computer)算法实现的一种向量旋转功能。Cordic算法,又称为坐标旋转数字计算机,是一...

    Leetcode-best-DSA-问题:必须执行这些leetcode编码问题以提高您的问题解决能力

    LeetCode中的这类问题涵盖了排序、查找、反转等操作,如“两数之和”(Two Sum)、“旋转数组”(Rotate Array)和“合并两个有序链表”(Merge Two Sorted Lists)。 2. **栈和队列**:这两种线性结构在处理逆序...

    leetcode第四题-LeetCodeQs:用python2解决的Leetcode问题

    3. 旋转数组的最小数字(Rotate Array):理解数组操作,可能涉及到双指针技巧。 4. 最长回文子串(Longest Palindromic Substring):动态规划的应用。 5. 有效的括号(Valid Parentheses):栈的数据结构用于检查...

    leetcode分类-leetcode:leetcode刷题

    3. **数组旋转**:如“旋转数组”(Rotate Array),需要对数组进行特定步数的逆时针或顺时针旋转。 4. **滑动窗口**:在数组中使用滑动窗口进行统计,如“最长连续序列”(Longest Consecutive Sequence)。 5. *...

    arrayrotate:面试题

    ============ 面试问题:编写一个函数,该函数接受一个整数数组并返回该数组旋转了 N 个位置。 例如,如果 N=2,给定输入数组 [1, 2, 3, 4, 5, 6] 函数应该返回 [5, 6, 1, 2, 3, 4] 解决方案: 用递归解决。...

Global site tag (gtag.js) - Google Analytics