두 개의 숫자를 찾는 두 포인터 방법
4291 단어 cppalgorithmsdsaprogramming
예를 들어, x+y = 타겟
여기에서 배열, 목록, 벡터 또는 배열이 정렬된 다른 순차적 데이터 구조에서 x,y를 찾아야 합니다.
무차별 접근
따라서 최악의 경우
시간 복잡도 - O(n^2)
두 포인터 방법
start
및 end
두 변수를 사용합니다. start
. end
가 배열의 마지막 요소를 향하도록 가리킵니다. 조건 -
start + end == target
. start + end > target
이면 왼쪽으로 end
이동합니다. start + end < target
이면 start
오른쪽으로 이동합니다. 따라서 이 기술을 사용하여 이 문제를 다음과 같이 해결할 수 있습니다.
시간 복잡도 - O(n)
// Program to get two numbers from array whose sum is equal to target element.
#include <bits/stdc++.h>
using namespace std;
int main()
{
int a[10] = {1, 4, 6, 8, 9, 12, 14, 16, 17};
int target = 20, start = 0, end = 8;
while ((a[start] + a[end] != target) && (start < end))
{
if (a[start] + a[end] > target)
{
end--;
}
else
{
start++;
}
}
cout << "Two numbers are: " << a[start] << ", " << a[end] << endl;
return 0;
}
// Code contributed by Kunal Agrawal
이 기사를 읽어 주셔서 감사합니다.
좋은 하루 되세요! 🙂
Reference
이 문제에 관하여(두 개의 숫자를 찾는 두 포인터 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/itskunal/two-pointer-method-to-find-two-numbers-1l6k텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)