문제가 있습니다. 배열이 주어지면 가능한 모든 하위 배열에 대해 가장 작은 정수와 두 번째로 작은 정수를 찾습니다. 여기서 하위 배열은 원래 배열의 인접한 하위 집합입니다.O (n)에서 주어진 배열의 각 부분 배열에 대한 가장 작은 정수의 모든 쌍을 찾으십니까?
예를 들어 배열 A = [5, 6, 1, 2, 9, 3]을 생각해보십시오. 분명히 서브 어레이 크기는 적어도 2가 될 것이므로 총 (n) * (n + 1)/2 - n 서브 어레이가 있습니다. (크기 1의 총합에서 n 개의 서브 어레이를 뺍니다). 그것은 각각의 하위 배열을 검사하고 필요한 정수를 기록하는 직선적 인 O (n^2) 솔루션입니다. 하지만 스택을 사용하여 O (n)에서 수행 할 수 있다고 생각합니다. 하지만 나는 최적의 솔루션에 도달하기 위해 그것을 직관적으로 사용할 수 없습니다. 도움, 조언, 방향에 감사드립니다.
에서 체크 아웃,하지만 난이 알고리즘 뒤에 직관이 부족하다. 그래, 나는 또한 그 문제에 대한 토론 포럼을 통해 갔는데 그들은 같은 알고리즘을 언급했다. ** 스택에 값 b가 있고 더 작은 값 c를 만나면 b는 C의 오른쪽에있는 어떤 것과도 최소한 쌍을 이루지 못합니다. 왜 그렇습니까? . –
그 경우에 C가 b 대신 대답에 있기 때문에. 제가 1 5 3 4를 가졌습니다.이 경우 5는 4의 오른쪽에 대한 답변에 기여하지 않을 것입니다. – marvel308