삼각형의 변의 중점인 세 개의 좌표가 있다고 가정합니다. 삼각형의 좌표를 찾아야 합니다. 따라서 입력이 (5, 3), (4, 4), (5, 5)와 같으면 출력은 (4, 2), (4, 6), (6, 4)가 됩니다. 이를 해결하기 위해서는 X좌표와 Y좌표를 따로 풀어야 합니다. 꼭짓점의 X 좌표는 x1, x2, x3으로 둡니다. 그러면 중간점의 X 좌표는 (x1 + x2)/2, (x2 + x3)/2, (x3 + x1)/2가 됩니다. 이 세 가지 표현의 합은 X 좌표의 합과 같습니다. 이제 우리는 세 변수의 합과 모든 쌍의 합에 대한
리프 노드가 연결되어 순환 이중 연결 목록을 형성하는 특수 이진 트리가 있다고 가정합니다. 우리는 그 높이를 찾아야 합니다. 따라서 맨 왼쪽 리프의 왼쪽 포인터는 원형 이중 연결 목록의 이전 포인터 역할을 하고 오른쪽 포인터는 연결 목록의 다음 포인터 역할을 합니다. 이 경우 높이 찾기 전략은 일반 이진 탐색 트리와 유사합니다. 우리는 재귀적으로 노드의 왼쪽 및 오른쪽 하위 트리의 높이를 계산하고 노드에 대한 높이를 두 자식의 최대값 + 1로 할당합니다. 하지만 여기서 잎은 원형 이중 연결 목록의 요소입니다. 따라서 노드가 리프
바이너리 문자열 bin이 있다고 가정합니다. 그런 다음 n번의 반복을 적용하고 각 반복에서 0은 01이 되고 1은 10이 되고 n번째 반복 후 문자열에서 i번째 인덱스 문자가 나옵니다. 따라서 이진 문자열이 101이고 n =2이고 i =3이면 첫 번째 반복 후에는 100110이 되고 다음 반복에서는 100101101001이 되므로 i번째 인덱스는 1을 유지합니다. 이 문제를 해결하려면 다음 단계를 따라야 합니다. 루프를 n번 실행하고 각 반복에서 문자열에 대해 다른 루프를 실행합니다. 2진 문자열의 각 문자를 변환하고 0이면
우리가 알고 있듯이 원자가 수는 원자가 다른 원자와 얼마나 많은 결합을 형성해야 하는지를 정의하는 숫자입니다. 우리는 세 개의 원자의 원자가 번호를 가지고 있습니다. 우리는 그들이 하나의 분자를 만들 수 있는지 여부를 확인해야 합니다. 원자는 서로 여러 개의 결합을 형성할 수 있습니다. 따라서 밸런스 번호가 2, 4, 2이면 출력은 YES입니다. 채권은 아래와 같으므로 - 1 – 2, 1 – 2, 2 – 3, 2 – 3. 원자가 번호가, b 및 c라고 가정합니다. c가 가장 크다고 생각하십시오. 그러면 분자를 형성할 수 없는 두
하나의 인코딩된 문자열이 있다고 가정합니다. 여기서 부분 문자열의 반복은 부분 문자열 다음에 부분 문자열의 개수로 표시됩니다. 따라서 문자열이 ab2cd2와 같으면 ababcdcd를 나타내고 k =4이면 k번째 문자, 즉 여기서 b를 반환합니다. 이를 해결하기 위해 우리는 처음에 빈 암호 해독된 문자열을 가져온 다음 부분 문자열과 해당 빈도를 하나씩 읽어 문자열의 압축을 풉니다. 그런 다음 해독된 문자열의 현재 부분 문자열을 빈도별로 추가합니다. 문자열이 소진될 때까지 이 과정을 반복하고 해독된 문자열에서 K번째 문자를 출력합니다
스택에 최대 요소를 저장할 수 있는 스택을 만들고 싶다고 가정합니다. 그리고 우리는 O(1) 시간에 그것을 얻을 수 있습니다. 제약 조건은 추가 공간을 사용하지 않아야 하므로 O(1) 추가 공간입니다. 최대 값을 저장할 사용자 정의 스택을 하나 만들 수 있습니다. pop 또는 peek과 같은 작업이 수행되면 최대 값이 반환됩니다. peek 작업의 경우 스택 상단과 최대 요소의 최대값을 반환하고 팝 작업의 경우 상단 요소가 더 클 때 인쇄하고 max를 2*max – top_element로 업데이트합니다. 그렇지 않으면 top_ele
우리가 그러한 금액을 가지고 있고 주어진 금액으로 합산되는 다른 교단의 최소 지폐 수를 찾아야 한다고 가정합니다. 가장 높은 금액의 지폐부터 시작하여 주어진 금액에 대해 가능한 한 많은 지폐를 찾으십시오. 여기서 {2000, 500, 200, 100, 50, 20, 10, 5, 2, 1}의 무한한 양이 있다고 가정합니다. 따라서 금액이 800이라고 하면 메모는 500, 200, 100이 됩니다. 여기서 우리는 이 문제를 해결하기 위해 탐욕스러운 접근 방식을 사용할 것입니다. 예시 #include<iostream> usi
의사와 엔지니어의 특별한 가족이 있다고 생각해 보십시오. 몇 가지 규칙이 있습니다. 다음과 같습니다. - 누구나 두 자녀가 있습니다 엔지니어의 첫째 아이는 엔지니어, 둘째 아이는 의사 의사의 첫째 아이는 의사, 둘째 아이는 엔지니어 모든 세대의 의사와 엔지니어는 엔지니어에서 시작됩니다. 따라서 레벨 4 및 pos 2에 대한 결과를 얻으려면 결과는 Doctor가 됩니다. 아이디어는 간단합니다. 사람의 직업은 다음 두 가지에 달려 있습니다. 부모의 직업 노드의 위치:노드의 위치가 홀수이면 그 직업은 부모와 동일합니다. 그렇지
두 개의 정렬된 배열 arr1과 arr2가 있다고 가정하고 크기는 각각 m과 n입니다. 두 배열의 상대 보수를 찾아야 합니다. 그것은 우리가 arr1에는 있지만 arr2에는 없는 모든 요소를 찾아야 한다는 것을 의미합니다. 따라서 배열이 A =[3, 6, 10, 12, 15]이고 B =[1, 3, 5, 10, 16]인 경우 결과는 [6, 12, 15] 이를 해결하기 위해 set_difference 함수를 사용할 수 있습니다. 문제는 기본적으로 미분 연산을 설정하기 때문입니다. 예시 #include<iostream>
완전한 이진 트리의 수준 수를 나타내는 양의 정수 L이 있다고 가정합니다. 이 완벽한 이진 트리의 리프 노드는 1에서 n까지 번호가 매겨집니다. 여기서 n은 리프 노드의 수입니다. 부모 노드는 자식의 합입니다. 우리의 임무는 이 완벽한 이진 트리의 모든 노드의 합을 출력하는 프로그램을 작성하는 것입니다. 트리가 아래와 같다면 - 따라서 총합은 30입니다. 더 자세히 보면 모든 노드의 합을 찾아야 합니다. 리프 노드는 1에서 n까지의 값을 보유하므로 n(n+1)/2 공식을 사용하여 리프 노드의 합계를 얻을 수 있습니다. 완전
장축과 단축 길이가 2a &2b인 타원이 있다고 가정합니다. 우리는 그 안에 새겨질 수 있는 가장 큰 원의 넓이를 찾아야 합니다. 따라서 a =5이고 b =3이면 면적은 28.2734가 됩니다. 타원에 내접하는 최대 면적 원의 반지름이 단축 b가 됨을 알 수 있습니다. 따라서 면적은 A =π*b*b가 됩니다. 예시 #include<iostream> using namespace std; double inscribedCircleArea(double b) { double area = 3.1415 *
n개의 요소가 있는 배열 A가 있다고 가정합니다. 주어진 배열에서 연속된 짝수의 최대 개수를 찾아야 합니다. 따라서 배열이 A =[1, 2, 3, 4, 6, 8, 7]과 같으면 개수는 3이 됩니다. 우리는 이것을 쉽게 해결할 수 있습니다. 우리는 두 개의 카운트 변수가 필요합니다. 하나는 max_current이고 다른 하나는 max_till_now입니다. 짝수가 발견되면 max_current를 증가시킨 다음 max_till_now와 비교하십시오. 홀수 요소가 발견될 때마다 max_count를 0으로 재설정합니다. 예시 #inclu
직선에 N개의 역이 있다고 가정합니다. 그들 각각은 동일한 음이 아닌 방사선 전력을 가지고 있습니다. 모든 스테이션은 다음과 같은 방법으로 인접 스테이션의 방사 전력을 증가시킬 수 있습니다. 방사선 전력이 R인 스테이션 i가 (i – 1) 스테이션의 방사선 전력을 R-1만큼 증가시키고 (i - 2) 스테이션의 방사선 전력을 R-2만큼 증가시키고 (i + 1) 스테이션의 방사선 전력을 증가시킨다고 가정합니다. R-1에 의한 방사 전력, R-2에 의한 (i + 2)번째 스테이션의 방사 전력. 곧. 예를 들어 배열이 Arr =[1, 2
원이 있고 그 원 위에 n개의 휘발유 펌프가 있다고 가정합니다. 다음과 같은 두 가지 데이터 세트가 있습니다. 모든 휘발유 펌프에 있는 휘발유의 양 한 휘발유 펌프에서 다른 휘발유 펌프까지의 거리 트럭이 원을 완성할 수 있는 첫 번째 지점을 계산합니다. 1리터 휘발유의 경우 트럭이 1단위 거리를 갈 수 있다고 가정합니다. 4개의 휘발유 펌프가 있고 휘발유의 양과 다음 휘발유 펌프까지의 거리는 [(4, 6), (6, 5), (7, 3), (4, 5)]와 같다고 가정합니다. 트럭이 순환 투어를 할 수 있는 첫 번째 지점은 2nd
처음에는 증가하다가 감소하는 배열이 하나 있다고 가정합니다. 배열에서 최대값을 찾아야 합니다. 따라서 배열 요소가 A =[8, 10, 20, 80, 100, 250, 450, 100, 3, 2, 1]과 같으면 출력은 500이 됩니다. 이진 검색을 사용하여 이 문제를 해결할 수 있습니다. 세 가지 조건이 있습니다 - mid가 인접한 두 요소보다 크면 mid가 최대값입니다. mid가 다음 요소보다 크지만 이전 요소보다 작은 경우 max는 mid의 왼쪽에 있습니다. 중간 요소가 다음 요소보다 작지만 이전 요소보다 큰 경우 max는 m
M x N 차수의 행렬이 있다고 가정하고 주어진 행렬의 평균 벡터를 찾아야 합니다. 따라서 행렬이 다음과 같은 경우 - 1 2 3 4 5 6 7 8 9 평균 벡터는 [4, 5, 6]입니다. 각 열의 평균은 (1 + 4 + 7)/3 =4, (2 + 5 + 8)/3 =5, (3 + 6 + 9)입니다. )/3 =6 예제에서 각 열의 평균을 계산하면 평균 벡터가 된다는 것을 쉽게 식별할 수 있습니다. 예시 #include<iostream> #define M 3 #define N 3 using namespace std
n개의 요소가 있는 배열 A가 있다고 가정합니다. 그리고 n은 짝수입니다. 배열의 균형을 유지하는 데 필요한 값을 찾아야 합니다. 배열의 크기가 짝수이므로 두 개의 반을 만들 수 있습니다. 왼쪽 절반의 합과 오른쪽 절반의 합이 균형을 이루어야 합니다. 따라서 배열이 A =[1, 2, 3, 2, 5, 3]인 경우 왼쪽 절반의 합은 6이고 오른쪽 절반의 합은 10입니다. 따라서 배열의 균형을 맞추려면 4가 필요합니다. 작업은 간단합니다. 전반부와 후반부의 합을 찾은 다음 절대 차이를 찾아 반환합니다. 예시 #include<ios
트리가 있고 모든 노드의 가중치와 정수 x가 있다고 가정합니다. |weight[i] - x|와 같은 노드 i를 찾아야 합니다. 최소입니다. 그래프가 아래와 같을 때 x =15 출력은 3이 됩니다. 이제 다른 노드의 경우 아래와 같을 것입니다. 노드 1, |5 – 15| =10 노드 2, |10 – 15| =5 노드 3, |11 – 15| =4 노드 4, |8 – 15| =7 노드 5, |6 – 15| =9 아이디어는 간단합니다. 우리는 트리에서 DFS를 수행하고 x와의 가중 절대 차이가 최소값을 제공하는 노드를 추적
하나의 이진 검색 트리가 있다고 가정합니다. 이진 탐색 트리에서 최소 요소를 찾아야 합니다. 따라서 BST가 아래와 같으면 - 최소 요소는 1입니다. 왼쪽 하위 트리는 항상 더 작은 요소를 보유한다는 것을 알고 있습니다. 따라서 왼쪽 하위 트리를 계속해서 왼쪽이 null이 될 때까지 탐색하면 가장 작은 요소를 찾을 수 있습니다. 예시 #include<iostream> using namespace std; class node{ public: node *le
n개의 요소가 있는 하나의 정수 배열이 있다고 가정합니다. 배열에서 4배의 최대 곱을 찾아야 합니다. 따라서 배열이 [3, 5, 20, 6, 10]과 같으면 최종 제품은 6000이고 4배의 요소는 10, 5, 6, 20입니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 배열을 오름차순으로 정렬 x가 마지막 4개 요소의 곱, y가 처음 4개 요소의 곱, z가 처음 2개와 두 번째 2개 요소의 곱이라고 가정합니다. x, y, z의 최대값을 반환합니다. 예시 #include<iostream> #include<