zoukankan      html  css  js  c++  java
  • leetcode------Rotate Array

    标题: Rotate Array
    通过率: 18.4%
    难度: 简单

    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].

    Note:
    Try to come up as many solutions as you can, there are at least 3 different ways to solve this problem.

    [show hint]

    Hint:
    Could you do it in-place with O(1) extra space?

    Credits:
    Special thanks to @Freezen for adding this problem and creating all test cases.

    第一种思路,k等于多少就循环多少次:意思是若k=3则所有元素向后移动三次,越界的则进行放在第一位操作,

    具体看代码:

     1 public class Solution {
     2     public void rotate(int[] nums, int k) {
     3         int length=nums.length;
     4         int value=0;
     5         for(int i=0;i<k;i++){
     6             value=nums[length-1];
     7             for(int j=nums.length-2;j>=0;j--){
     8                 nums[j+1]=nums[j];
     9             }
    10             nums[0]=value;
    11         }
    12     }
    13 }

    上述思路明显不是高效的,下面对数据进行分析,

    1.2.3.4.5

    当k=3时结果是3,4,5,1,2

    把结果逆序下 可以看出来是   2,1,5,4,3逆序结果与正序进行对比

    1,2,3,4,5

    2,1,5,4,3

    发现在k-1的位置前后都是逆序的,

    第二种分析。

    原数据逆序

    5,4,3,2,1

    3,4,5,1,2

    也是在k-1位置前后进行逆序,

    那么我只用对原数据做如下操作就可得到结果:

    1、原数据逆序

    2,k-1之前逆序

    3,k-1之后逆序

    直接看代码:

     1 public class Solution {
     2     public void rotate(int[] nums, int k) {
     3         int length=nums.length;
     4         k%=length;
     5         res(nums,0,length-1);
     6         res(nums,0,k-1);
     7         res(nums,k,length-1);
     8         
     9     }
    10     public void res(int []arraynum,int start,int end){
    11         while(start<=end){
    12             int temp=arraynum[start];
    13             arraynum[start]=arraynum[end];
    14             arraynum[end]=temp;
    15             start++;
    16             end--;
    17         }
    18     }
    19 }
  • 相关阅读:
    Git 简易手册
    【Swift】UILabel 设置内边距
    【iOS】屏幕适配之NSLayoutConstraint
    【Swift】TTTAttributedLabel使用小记
    【iOS】Alamofire库在iOS7下设置Head无效的问题
    【iOS】在Swift中使用JSONModel
    【读书笔记】100个Switf必备tips
    【读书笔记】长尾理论
    【读书笔记】结网
    嗯,农民伯伯的2014就是这些
  • 原文地址:https://www.cnblogs.com/pkuYang/p/4311331.html
Copyright © 2011-2022 走看看