짧은 배열의 경우 다음 함수가 잘 작동합니다. 그것은 whe 합이 주어진 정수와 같은 첫 번째 배열 쌍을 반환한다고 가정합니다. 그러나 배열의 길이가 1 천만 개 이상인 경우 요청이 시간 초과됩니다. 왜냐하면 (내가 생각하기에) 첫 번째 줄에 만드는 변수에 수천 개의 값을 저장하기 때문입니다. 나는 memoization (|| =)을 사용해야 만하지만 그것을 어떻게 사용해야할지 모른다.루비 배열에 값 저장을위한 메모 사용하기
array1 = [1,2,3,4,5,6,7]
number = 3
array2 = [1,2,3.....n] # millions of elements
combos = array1.combination(2).to_a
(combos.select { |x,y| x + y == number }).sort.first
은 내가 전체 목록을 가서 true를 돌려 첫 번째 쌍에서 중지하지 않는 선택 사용하고, 그들을 정렬 모든 가능한 쌍을 수집해야합니다.
무엇'INTEGER'은?''대신'select' +'first'? –
내가 수정 한 코드의 find'하지 왜?이해야합니까 무엇? 무엇을 ARRAY'된다. 나는 iterati를 멈추기 때문에 탐지 나 발견을 사용하지 않는다. 일단 그들이 첫 번째 사실을 발견하면. – Leo
하지만 어쨌든 첫 번째 어커런스를 찾고 싶습니다. 무엇보다 먼저 필요한 경우, 모두를 찾는 데있어 중요한 점은 무엇입니까? –