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);
            }
        }
    };
  • 相关阅读:
    关于trunk、access以及hybrid的一些简单知识
    EasyUI 创建对话框
    EasyUI Window和Layout
    EasyUI 异步Tree
    EasyUI 创建Tree
    EasyUI Tree添加节点
    EasyUI Ajax 表单
    EasyUI Tree checkbox node
    EasyUI 表单 tree
    EasyUI DataGrid合并单元
  • 原文地址:https://www.cnblogs.com/AndyJee/p/4470783.html
Copyright © 2011-2022 走看看