Hackerrank 동적 배열 시간 초과

머독 1871

저는 Hackerrank에서 Data Structures 트랙을 작업하고 있었는데,이 문제를 발견했습니다 .

내 코드가 작동한다고 생각하지만 시간 초과 문제가 발생합니다. 즉, 쿼리가 많은 입력에서 실행하는 데 너무 오래 걸리는 것 같습니다. 다음은 시간 제한 문제가있는 솔루션의 첫 번째 샷입니다.

import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

public class Solution {

public static void main(String[] args) {
    /* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */
    Scanner sc = new Scanner(System.in);
    int n = sc.nextInt();
    int q = sc.nextInt();
    ArrayList<Integer>[] group = (ArrayList<Integer>[])new ArrayList[n];
    int lastAns = 0;
    ArrayList<Integer> curr = null;
    //int currVal = 0;

    for(int i = 0;i < q;i++){
        int query = sc.nextInt();
        int x = sc.nextInt();
        int y = sc.nextInt();
        int thing = (x^lastAns) % n;

        if(query == 1){
            if(group[thing] == null){
                group[thing] = new ArrayList<Integer>(n);
            }
            curr = group[thing];
            curr.add(y);
        }else if(query == 2){

            curr = group[thing];
            lastAns = curr.get(y % curr.size());
            System.out.println(lastAns);
        }
    }
    sc.close();
}
}

다음은 시간 초과 문제없이 작동하는 코드입니다.

import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

public class Solution {
public static void main(String[] args) {

    Scanner sc = new Scanner(System.in);
    int n = sc.nextInt();
    int q = sc.nextInt();
    int lastAns = 0;
    ArrayList<ArrayList> group = new ArrayList();
    ArrayList<Integer> curr = null;
    //int currVal = 0;

    for (int i = 0; i < n; i++){
        group.add(new ArrayList<Integer>());
    }

    for(int i = 0;i < q;i++){
        int query = sc.nextInt();
        int x = sc.nextInt();
        int y = sc.nextInt();
        int thing = (x^lastAns) % n;

        if(query == 1){
            curr = group.get(thing);
            curr.add(y);
        }else if(query == 2){

            curr = group.get(thing);
            lastAns = curr.get(y % curr.size());
            System.out.println(lastAns);
        }
    }        
    sc.close();
}
}

내 질문은 다음과 같습니다. 여기서 시간 초과 문제를 해결 한 차이점은 무엇입니까? 내 첫 번째 추측은 배열이 ArrayLists보다 요소에 액세스 / 변경하는 데 더 오래 걸린다는 것입니다. 이것이 사실입니까?

StriplingWarrior

내가 보는 주요 차이점은 성능이 저조한 코드에서는 각 내부 ArrayList<Integer> 에 초기 크기를 n부여하는 반면 다른 코드에서는 초기 크기를 외부 목록에만 제공한다는 것입니다.

group[thing] = new ArrayList<Integer>(n);

vs

group.add(new ArrayList<Integer>());

나는 이것이 실수라고 생각하고 각 내부 목록에 크기 n를 지정 함으로써이 알고리즘에 필요한 메모리 공간을 만들고 O(n²)있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Javascript의 시간 초과로 인해 hackerrank 순환 배열 회전이 종료되었습니다.

분류에서Dev

Hackerrank Java 맵 질문 시간 초과 문제

분류에서Dev

HackerRank의 도로 및 도서관 (DFS) 시간 초과

분류에서Dev

재귀로 인한 hackerrank 암호 크래커 시간 초과

분류에서Dev

NodeJS-배열의 각 요소 사이에 시간 초과로 순차적으로 배열을 반복

분류에서Dev

c 배열과 구조체를 동시에 초기화

분류에서Dev

파일을 열고 시간 초과와 함께 비동기 적으로 FileStream 가져 오기

분류에서Dev

동적 배열 초기화

분류에서Dev

세션 시간 초과시 ThreadLocal 동작

분류에서Dev

동적 알고리즘 문제에서 시간 초과

분류에서Dev

존재하는 경우 배열의 시간 초과 지우기

분류에서Dev

VBA에서 동적 시트 배열 선언 및 초기화

분류에서Dev

jcifs 공유 열거 시간 초과

분류에서Dev

동시 비동기 요청-필요한 시간 초과를 추적

분류에서Dev

배열 인덱스에 대해 부동 소수점과 정수 간의 암시 적 변환 방지

분류에서Dev

6 시간 후 쿼리 시간 초과, 최적화 방법

분류에서Dev

Camel AWS-SQS : 표시 시간 초과를 동적으로 설정

분류에서Dev

HackerRank Python-일부 테스트 케이스가 "시간 초과로 인해 종료 됨"이 발생합니다. 코드를 어떻게 최적화 할 수 있습니까?

분류에서Dev

배열을 반복하고 반응 js의 setTimeout 또는 SetInterval과 같은 동적 시간 기간으로 한 번에 단일 항목을 표시합니다.

분류에서Dev

SFTP 시간 초과이지만 SSH는 정상적으로 작동합니다.

분류에서Dev

SFTP 시간 초과이지만 SSH는 정상적으로 작동합니다.

분류에서Dev

jquery : ID를 사용하는 동적 앵커의 이름 시간 초과

분류에서Dev

읽기 중 DSE Hadoop 간헐적 인 시간 초과 오류

분류에서Dev

읽기 중 DSE Hadoop 간헐적 인 시간 초과 오류

분류에서Dev

numpy 배열에서 특정 값이 n 번째 초과 된 시간 찾기

분류에서Dev

2D 동적 배열 C ++ 초기화시 읽기 액세스 위반

분류에서Dev

C에서 동적 배열 초기화

분류에서Dev

NodeJS / Webpack Heroku 배포시 포트 시간 초과

분류에서Dev

GCDAsyncUdpSocket 시간 초과

Related 관련 기사

  1. 1

    Javascript의 시간 초과로 인해 hackerrank 순환 배열 회전이 종료되었습니다.

  2. 2

    Hackerrank Java 맵 질문 시간 초과 문제

  3. 3

    HackerRank의 도로 및 도서관 (DFS) 시간 초과

  4. 4

    재귀로 인한 hackerrank 암호 크래커 시간 초과

  5. 5

    NodeJS-배열의 각 요소 사이에 시간 초과로 순차적으로 배열을 반복

  6. 6

    c 배열과 구조체를 동시에 초기화

  7. 7

    파일을 열고 시간 초과와 함께 비동기 적으로 FileStream 가져 오기

  8. 8

    동적 배열 초기화

  9. 9

    세션 시간 초과시 ThreadLocal 동작

  10. 10

    동적 알고리즘 문제에서 시간 초과

  11. 11

    존재하는 경우 배열의 시간 초과 지우기

  12. 12

    VBA에서 동적 시트 배열 선언 및 초기화

  13. 13

    jcifs 공유 열거 시간 초과

  14. 14

    동시 비동기 요청-필요한 시간 초과를 추적

  15. 15

    배열 인덱스에 대해 부동 소수점과 정수 간의 암시 적 변환 방지

  16. 16

    6 시간 후 쿼리 시간 초과, 최적화 방법

  17. 17

    Camel AWS-SQS : 표시 시간 초과를 동적으로 설정

  18. 18

    HackerRank Python-일부 테스트 케이스가 "시간 초과로 인해 종료 됨"이 발생합니다. 코드를 어떻게 최적화 할 수 있습니까?

  19. 19

    배열을 반복하고 반응 js의 setTimeout 또는 SetInterval과 같은 동적 시간 기간으로 한 번에 단일 항목을 표시합니다.

  20. 20

    SFTP 시간 초과이지만 SSH는 정상적으로 작동합니다.

  21. 21

    SFTP 시간 초과이지만 SSH는 정상적으로 작동합니다.

  22. 22

    jquery : ID를 사용하는 동적 앵커의 이름 시간 초과

  23. 23

    읽기 중 DSE Hadoop 간헐적 인 시간 초과 오류

  24. 24

    읽기 중 DSE Hadoop 간헐적 인 시간 초과 오류

  25. 25

    numpy 배열에서 특정 값이 n 번째 초과 된 시간 찾기

  26. 26

    2D 동적 배열 C ++ 초기화시 읽기 액세스 위반

  27. 27

    C에서 동적 배열 초기화

  28. 28

    NodeJS / Webpack Heroku 배포시 포트 시간 초과

  29. 29

    GCDAsyncUdpSocket 시간 초과

뜨겁다태그

보관