zoukankan      html  css  js  c++  java
  • (数组) leetcode 189. Rotate Array

    注意:k可能比数组的长度大,所 k = k%n (n为数组长度)。

    思路一:暴力法。循环移动k次。

    class Solution {
    public:
        void rotate(vector<int>& nums, int k) {
            
            int a = 0;
            for(int i=0; i< k%nums.size(); ++i){
                a = nums.back();   //取nums的最后一个元素
                nums.insert(nums.begin(), a);   //插入到nums开头
                nums.pop_back();   //删除最后一个元素
            }
        }
    };

    思路二:先把前 n-k 个数字翻转一下,再把后k个数字翻转一下,最后再把整个数组翻转一下:

    1 2 3 4 5 6 7 
    4 3 2 1 5 6 7 
    4 3 2 1 7 6 5
    5 6 7 1 2 3 4

    class Solution {
    public:
        void rotate(vector<int>& nums, int k) {
            int n = nums.size();
            k = k%n;   //k对n取余
            if(nums.empty() || k ==0 )
                return;
            reverse(nums.begin(), nums.begin()+n-k);  // [first, end)
            reverse(nums.begin()+n-k, nums.end());    //reverse 从索引为n-k到末尾
            reverse(nums.begin(), nums.end());    //reverse整个nums
        }
    };
  • 相关阅读:
    Spring(3)
    Spring(2)
    Spring(1)
    2016年给自己的一个清单计划
    今天早上是我第一次发博客,请大家多多关照
    QTP知识积累
    [转]基于实际测试的功能测试点总结
    Django之模板
    Django之视图
    HTML
  • 原文地址:https://www.cnblogs.com/Bella2017/p/11263973.html
Copyright © 2011-2022 走看看