zoukankan      html  css  js  c++  java
  • (LeetCode 189)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].

    题目:

    给一数组,n个元素,将数组向右移动循环移动k个元素。

    思路:

    注意题目的要求是循环移动,所以k可以是任意非负整数,但数组元素个数为n,因此k=k%n。

    一种通用的思路就是:

    1、翻转整个数组 :A[0…n-1];如[7,6,5,4,3,2,1]

    2、翻转数组前k个:A[0,k-1];如[5,6,7,4,3,2,1]

    3、翻转数组后n-k个:A[k,n-1];如[5,6,7,1,2,3,4]

    类似的应用:翻转句子中的全部单词,单词内容不变。

    代码:

    class Solution {
    public:
        void reverse(int nums[],int i,int j){
            while(i<j){
                int tmp=nums[i];
                nums[i]=nums[j];
                nums[j]=tmp;
                i++;
                j--;
            }
        }
        
        void rotate(int nums[], int n, int k) {
            k=k%n;
            if(k>=1 && n>1 && k<=n){
                reverse(nums,0,n-1);
                reverse(nums,0,k-1);
                reverse(nums,k,n-1);
            }
        }
    };
  • 相关阅读:
    maven错误
    angularjs的一点总结
    工具汇总
    重启outlook的bat脚本
    前端框架参考
    imply套件以及plyql的安装
    centos下nodejs,npm的安装和nodejs的升级
    kafka错误集锦
    动态规划DP笔记
    链接
  • 原文地址:https://www.cnblogs.com/AndyJee/p/4470783.html
Copyright © 2011-2022 走看看