189. Rotate Array

1322 단어 문 제 를 풀다
  • 제목:https://leetcode.com/problems/rotate-array/
  • 사고방식:
  • 폭력, 직접 새로운 new 배열 로 답 을 저장 하고 회전 후의 index 를 구하 고 요 소 를 배치 하면 됩 니 다
  • 그러나 제목 은 O (1) 의 공간 을 요구한다. 그러면 순환 이동 만 할 수 있다. a 는 b, b 는 c, c 는 d
  • 에 놓는다.
  • 구덩이
  • 순환 이동 은 가장 시작 하 는 위치 [사순환] 로 이동 할 수 있 습 니 다. 예 를 들 어 6 개의 숫자, 3 칸 이동 은 3 개의 순환 [0 에서 3, 3 으로 0 이동; 1 에서 4, 4 로 1 이동; 2 에서 5, 5 로 2 이동]
  • 코드
    
    class Solution {
    public:
        void rotate(vector& nums, int k) {
            int len = nums.size();
            int next_temp;
            int index = 0;
            int next_index;
            if (len <= 1 || k%len==0)
                return;
            int temp = nums[0];
            int start_index = 0;
            for (int i = 0; i < len; i++) {
                next_index = (index+k)%len;
                next_temp = nums[next_index];
                nums[next_index] =temp;
                temp = next_temp;
                index = next_index;
                if (index == start_index) {
                    index = (index+1)%len;
                    temp = nums[index];
                    start_index = index;
                }
            }
            
        }
    };

     

  • 좋은 웹페이지 즐겨찾기