[LeetCode]189. Rotate Array

    xiaoxiao2021-03-25  149

    [LeetCode]189. Rotate Array

    题目描述

    思路

    暴力解法: 计算要移动的次数k,然后将vector尾的数据弹出,插入vector第一位 换种思路: 只要三次reverse即可 假设数组为{1, 2, 3, 4}, k = 1

    index0123原数组1234第一次reverse4321第二次reverse3421第三次reverse3124

    代码

    #include <iostream> #include <vector> using namespace std; class Solution { public: void rotate(vector<int>& nums, int k) { /* k = k % nums.size(); while (k--) { nums.insert(nums.begin(), nums[nums.size() - 1]); nums.pop_back(); } */ int len = nums.size(); k %= len; reverse(nums.begin(), nums.end()); reverse(nums.begin(), nums.begin() + k); reverse(nums.begin() + k, nums.end()); } }; int main() { vector<int> nums = { 1, 2, 3}; Solution s; s.rotate(nums, 2); for (int p : nums) cout << p << " "; cout << endl; system("pause"); return 0; }
    转载请注明原文地址: https://ju.6miu.com/read-8322.html

    最新回复(0)