[Leet] - 189. Rotate Array [원형] - c++

ha·2022년 1월 31일
0

LeetCode

목록 보기
12/21

https://leetcode.com/problems/rotate-array/

  1. remainder(%) 사용
class Solution {
public:
    void rotate(vector<int>& nums, int k) {
        int size = nums.size();
        vector<int> tmp(nums);
        for(int i=0;i<size;i++){
            nums[(i+k)%size]=tmp[i];
        }
    }
};

2.수학적 계산 풀이 Space Complexity: O(1)

class Solution {
public:
    void rotate(vector<int>& nums, int k) {
        //[1,2,3,4,   5,6,7], k = 3 --> [5,6,7,   1,2,3,4]
        //k elements from the back end of the array come to the front
        k =k%nums.size();
        //reversing all numbers 
        reverse(nums.begin(),nums.end()); //[7 6 5 4 3 2 1]
        //reversing first k numbers
        reverse(nums.begin(),nums.begin()+k); //[5 6 7 4 3 2 1]
        // revering last n-k numbers
        reverse(nums.begin()+k,nums.end()); //[5 6 7 1 2 3 4]
    }

0개의 댓글