문자열은 일련의 데이터 문자를 나타내는 개체입니다. 문자열은 항상 텍스트 형식으로 표시되는 데이터 컨테이너입니다. 또한 개념, 비교, 분할, 결합, 교체, 자르기, 길이, 인턴, 같음, 비교, 하위 문자열 작업에도 사용됩니다. 퀵소트 분할 알고리즘을 사용하는 배열에서 K개의 가장 큰(또는 가장 작은) 요소입니다.
이것은 N개의 서로 다른 정수를 포함하는 배열 R[]입니다. 작업은 이전의 모든 요소보다 엄격하게 크고 오른쪽에 있는 최소 K개 요소보다 엄격하게 더 큰 특정 요소를 찾는 것입니다. 문제는 배열 arr[ ](배열 R)이 N개의 개별 요소와 정수 K로 구성된다는 것입니다. 왼쪽에 있는 모든 요소보다 크고 오른쪽에 최소한 K개의 요소가 있는 요소 수를 찾아야 합니다. .
으아악왼쪽의 모든 요소보다 크고 오른쪽의 최소 K개 요소보다 큰 배열 요소를 찾는 방법에는 두 가지가 있습니다.
순진한 방법 - 특정 배열을 반복하는 가장 간단한 방법입니다. 이 방법에서는 모든 요소를 왼쪽으로 탐색하여 요소가 더 작은지 확인해야 합니다. 그렇지 않으면 오른쪽으로 이동하여 가장 작은 K개 요소가 더 작은지 확인합니다. 이 접근 방식의 경우 시간 복잡도는 O(N2)이고 보조 공간은 O(1)입니다.
Efficient Method - 이는 자체 균형 BST로 수행할 수 있는 최적화 프로세스입니다. AVL 트리를 통해 오른쪽에서 왼쪽으로 배열을 하나씩 탐색합니다. AVL 트리는 countSmaller[] 배열을 생성합니다. 여기서 시간 복잡도는 O(NlogN)이고 보조 공간은 O(N)입니다. 조건을 만족하는 각 요소에 대해 개수를 늘립니다.
왼쪽의 모든 요소보다 크고 오른쪽의 최소 K개 요소보다 큰 배열 요소의 수를 찾아보겠습니다.
이 알고리즘에서는 배열 요소의 수를 계산하는 단계별 프로세스를 따릅니다. 이를 통해 모든 요소 중에서 가장 큰 요소를 찾는 C++ 코드를 작성하겠습니다.
1단계 - 시작하세요.
2단계 - 배열을 오른쪽에서 왼쪽으로 탐색합니다.
3단계 - 모든 요소를 AVL 트리에 삽입합니다.
4단계 - AVL 트리를 사용하여 countSmaller[] 배열을 생성합니다.
5단계 - 각 배열 요소 오른쪽에 있는 더 작은 요소의 개수를 포함합니다.
6단계 - 배열을 반복하면서 각 요소를 찾습니다.
7단계 - 이것이 지금까지 얻은 최대값인지, countSmaller[i]가 K보다 크거나 같은지 확인합니다.
8단계 - 조건이 충족되면 개수를 늘립니다.
9단계 - count의 최종 값을 답으로 인쇄합니다.
10단계 - 종료.
여기 정수 배열 num이 있습니다. 정수는 K입니다. 배열의 K번째 요소를 반환합니다. O(n) 시간복잡도로 풀어야 합니다.
방법 1 - 정렬을 사용하여 K개의 가장 큰(또는 가장 작은) 요소를 찾습니다.
방법 2 - 배열에서 K개의 가장 큰(또는 가장 작은) 요소를 찾는 효율적인 방법입니다.
정렬을 통해 이 문제의 결과를 얻을 수 있습니다. 단계는 다음과 같습니다 -
요소를 내림차순으로 정렬합니다.
이 정렬된 배열의 첫 번째 K 숫자를 인쇄하세요.
이 방법에서는 다음 단계에 따라 결과를 알아봅니다. -
시작하세요.
배열을 오른쪽에서 왼쪽으로 탐색하세요.
AVL 트리에 모든 요소를 삽입하세요.
countSmaller[] 배열을 생성합니다.
각 배열 요소 오른쪽에 있는 더 작은 요소의 개수입니다.
최대값인 경우 countSmaller[i]는 K보다 크거나 같습니다.
그런 다음 개수를 늘려보세요.
값을 인쇄하세요.
끝입니다.
그래서 우리는 왼쪽에 있는 모든 요소보다 더 큰 배열 요소 수와 오른쪽에 있는 최소 K개의 요소 수를 계산하는 C++ 코드를 작성하는 방법을 알았습니다.
위 내용은 왼쪽에 있는 모든 요소보다 크고 오른쪽에 최소한 K개의 요소가 있는 배열 요소의 수를 계산하는 C++ 프로그램의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!