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

解答

方法一

利用STL中的rotate方法

Exchanges the elements in two adjacent ranges.

Syntax

template
void rotate(
ForwardIterator _First,
ForwardIterator _Middle,
ForwardIterator _Last
);

Parameters

_First
A forward iterator addressing the position of the first element in the range to be rotated.
_Middle
A forward iterator defining the boundary within the range that addresses the position of the first element in the second part of the range whose elements are to be exchanged with those in the first part of the range.
_ Last
A forward iterator addressing the position one past the final element in the range to be rotated.

算法

void rotate(vector<int>& nums, int k) {
    k = k % nums.size();
    rotate(nums.begin(), nums.end() - k , nums.end());
}

方法二

向右移动就几步,就相当于将后面几个数插入到前面来

void rotate(vector<int>& nums, int k) {
    k = k % nums.size();
    if (k == 0)
        return;
    for (int i = 0; i < k; i++) {
        nums.insert(nums.begin(), *(nums.end() - 1));
        nums.pop_back();

    }
}

ps 这道题方法很多,我只写了两个比较容易写的方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值