배열 섞기(Javascript)

5363 단어 algorithmsjavascript
알고리즘은 내가 고군분투하는 것입니다. 내가 최근에 수행한 회사의 인터뷰 또는 선별 프로세스 중 일부는 알고리즘과 관련이 있습니다. 누군가에게 말을 걸기도 전에 제거되는 것은 매우 실망스러운 일입니다. 이에 최근에는 알고리즘을 푸는 것에 대해 의도적으로 생각하고 있습니다. 이번에는 this Leetcode problem 을 다루겠습니다.




Given the array nums consisting of 2n elements in the form
[x1,x2,...,xn,y1,y2,...,yn].
Return the array in the form [x1,y1,x2,y2,...,xn,yn].



내 임무는 카드 한 벌처럼 배열의 요소를 함께 섞는 것입니다. 이 문제는 Javascripts.push() 방법으로 간단합니다.

var shuffle = function(nums, n) {
    let arr = [];
    for ( let i=0; i<n; i++ ) {
        arr.push(nums[i], nums[i+n])
    };
    return arr;
};


  • 내 반환 값이 될 빈 배열arr을 선언합니다.
  • 인덱스가 for보다 클 때까지 실행되는 n 루프를 시작합니다.
  • 각 반복에서:
  • push() 현재 인덱스 nums[i]nums[i + n]를 반환 배열 arr로 반환합니다.

  • n 반복 후 새 배열을 반환합니다.

    push() 없이 접근했을 때 난이도가 높아졌다. 액세스해야 하는 인덱스를 추적하는 데 문제가 있어 화이트보드에 적어 두었습니다. 그것을 쓰고 난 후에 나는 패턴을 찾을 수 있었다. 반복할 때마다 내가 필요한 카운터를 정리했습니다.



    저는 4개의 변수i, y, x, b로 끝났습니다. i는 내 코드 블록의 반환 배열에 대한 첫 번째 인덱스를 가리켰습니다. y는 반환 배열의 두 번째 인덱스를 가리켰습니다. 이 두 변수는 각 반복마다 2씩 증가했습니다. x는 입력 배열의 첫 번째 인덱스를 가리켰습니다. b는 입력 배열의 두 번째 인덱스를 가리켰습니다. 이 두 변수는 각 반복마다 1씩 증가했습니다. 패턴을 잡으려면 정말 철저해야 했습니다. 그 후 나는 내가 해야 할 일을 빠르게 추론할 수 있었습니다. 이것이 나의 최종 해결책이었습니다.

    var shuffle = function(nums, n) {
        const arr = [];
        let i = 0
        for ( let x=0; x < n; x++) {
            arr[i] = nums[x];
            arr[i+1] = nums[x+n];
            i+=2;
        };
        return arr;
    };
    


  • 내 반환 값이 될 빈 배열arr을 선언합니다.
  • 다르게 증분할 루프 외부에 카운터i를 선언합니다.
  • 인덱스 forx보다 클 때까지 실행되는 n 루프를 시작합니다.
  • 각 반복에서:
  • arr[i]nums[x]로 설정
  • arr[i+1]nums[x+n]로 설정
  • i 2
  • 증가
  • 확인 여부x < n

  • 배열을 반환합니다.
  • 좋은 웹페이지 즐겨찾기