어레이를 왼쪽으로 회전

2084 단어
오늘은 배열을 왼쪽으로 회전하는 방법을 살펴보겠습니다.

이 왼쪽 회전 질문은 1자리를 왼쪽으로 또는 n자리를 왼쪽으로 회전하라고 말할 수 있습니다. 이 게시물에서 둘 다 볼 수 있습니다.
  • 왼쪽으로 1자리 회전
  • N자리 왼쪽으로 회전

  • Bonus:- lets look into collections built-in rotate for right and left rotate



    왼쪽으로 1자리 회전하는 것을 볼 수 있습니다.

    int[] reverseTheArrayByOne(int[] arr) {
        int temp = arr[0];
        for (int i = 1; i < arr.length; i++) {
          arr[i - 1] = arr[i];
        }
    
        arr[arr.length - 1] = temp;
        return arr;
      }
    


    한 자리만 이동하기 때문에 첫 번째 자리는 temp에 저장하고 나머지 요소는 왼쪽으로 이동한 다음 임시를 마지막 인덱스에 추가합니다.

    N 회전을 보자

    답을 얻기 위해 1 자리 회전을 N 번 실행하여 N 회전을 간단히 수행할 수 있습니다.

    int[] reverseTheArrayByNTimesEasy(int[] arr, int digits) {
        for (int i = 0; i < digits; i++) {
          arr = reverseTheArrayByOne(arr);
        }
        return arr;
      }
    
    


    또는 이 방법을 사용할 수 있습니다.

    int[] reverseTheArrayByNDigits(int[] arr, int digits) {
        int[] temp = new int[digits];
        for(int i=0;i<digits;i++){
          temp[i]=arr[i];
        }
        for(int i=0;i<arr.length-digits;i++){
            arr[i]=arr[digits+i];
        }
        for(int i=0;i<temp.length;i++){
            arr[digits-1+i]=temp[i];
        }
        return arr;
      }
    


    N 자리를 회전하기 위해 임시 배열을 사용하여 N 자리를 저장하고 나머지 자리를 처음으로 이동하고 임시 배열을 마지막으로 복사할 수 있습니다.

    Bonus :- we can simply use collections rotate method to perform this array Rotate



    int n = 1; 
    int[] arr = {2, 5, 8, 9, 12};
        List<Integer> arrList = 
    Arrays.stream(arr).mapToObj((e) -> Integer.valueOf(e)).collect(Collectors.toList());
        Collections.rotate(arrList,n);
        System.out.println(arrList.toString());
    


    여기서 n은 회전할 자릿수입니다. 기본적으로 Collections.rotate는 오른쪽 회전을 수행합니다. 왼쪽 회전을 원하면 음수 값을 줄 수 있습니다.

    Collections.rotate(arrList, 1)는 오른쪽 회전을 수행합니다.
    Collections.rotate(arrList,-1) 왼쪽 회전을 수행합니다.

    좋은 웹페이지 즐겨찾기