this 질문에서 대답에는 주어진 범위에서 범위 목록의 겹침을 찾는 알고리즘이 포함되었습니다. 하지만 내 상황에서는 n^2
쌍 형식 범위로 그룹화 할 때 n
정수 목록이 있습니다. 예를 들어 array[i]
과 array[j]
을 정수 배열에서 취하면 (array[i]-array[j],array[i]+array[j])
은 범위를 만듭니다. 그러나 제안 된 알고리즘을 구현하기 위해 솔루션은 메모리 복잡성이 O(n^2)
입니다. 메모리 (메모리 측면에서)를 더욱 최적화 할 수 있습니까?범위에서 중복을 찾는 더 많은 메모리 효율적인 알고리즘
예 : 나는 더 큰 범위 (l,r)
를 가지고 있고, 나는 ranges.For 예 목록의 적어도 어느 하나 (l,r)
거짓말, 지정된 정수 배열 {1,2,3}
얼마나 많은 정수 찾을 수있다. 가능한 모든 범위는 (2-1,1+2), (3-1,1+3), (3-2,3+2)
입니다. (l,r)
이 (2,7)
이라고 가정합니다. 그런 다음 (2,5)
이 하나 이상 존재하므로 4
이 답입니다.
@ user3386109 ..... 나는'(l, r)'이라는 더 큰 범위를 가지고 있으며 (l, r)의 정수가 범위 목록 중 적어도 하나에 얼마나 많이 있는지 찾아야합니다. 범위 목록은 문제의 방법으로 주어진 정수 배열에서 계산할 수 있습니다. – yobro97
@ user3386109 .... 예를 들어 주어진 정수 배열은'{1,2,3}'입니다. 따라서 가능한 모든 범위는'(2-1,1 + 2), (3-1,1 + 3), (3-2,3 + 2)'입니다. '(l, r)'이'(2,7)'이라고하자. 그리고'(2,5)'이 적어도 하나 이상 존재하기 때문에 '4'가 답이됩니다. – yobro97