문자열 str이 있다고 가정합니다. 그 안에서 반복되지 않는 마지막 문자를 찾아야 합니다. 따라서 입력 문자열이 프로그래밍과 같은 경우. 따라서 첫 번째 비반복 문자는 n입니다. 해당 문자가 없으면 -1을 반환합니다. 하나의 주파수 배열을 만들어 이를 해결할 수 있습니다. 이것은 주어진 문자열의 각 문자의 빈도를 저장합니다. 빈도가 업데이트되면 마지막 문자부터 하나씩 문자열 탐색을 시작합니다. 그런 다음 저장된 빈도가 1인지 확인하고 1이면 반환하고 그렇지 않으면 이전 문자로 이동합니다. 예시 #include <iostrea
두 개의 양의 정수 n과 k가 주어지고 k가 포함되거나 k로 나눌 수 있는 n번째 숫자를 찾아야 합니다. k는 [2 ~ 9] 범위에 있습니다. 따라서 n과 k가 각각 15와 3이면 출력은 33입니다. 숫자 [3, 6, 9, 12, 13, 15, 18, 21, 23, 24, 27, 30, 31, 33] 각 요소가 숫자 k =3 또는 k로 나누어지는 숫자를 포함하고 이 n번째 숫자는 33인 숫자입니다. 따라서 출력은 33입니다. k와 k의 배수를 포함하는 각 숫자를 확인하고 n번째 요소가 나올 때까지 계산합니다. 예시 #include
F(n) =P – (0.006*n)인 함수 F(n)이 있다고 가정합니다. 여기서 P도 제공됩니다. 정수 목록과 숫자 A가 주어지면 작업은 주어진 목록에서 함수 값이 A에 더 가까운 숫자를 찾는 것입니다. 따라서 P =12이고 A =5이면 목록은 {1000이 됩니다. , 2000} 따라서 출력은 1000이 됩니다. 따라서 P =12이고 A =5이면 1000의 경우 F(1000) =12 – (0.006 * 1000) =6이고 2000의 경우 F(2000) =12 – (0.006 * 2000) =0, 5에 가장 가까운 값은 6이므로 취합
두 개의 문자열 str1과 str2가 있다고 가정합니다. 두 번째 문자열에 대해 0개 이상의 작업을 수행한 후 이들 사이에서 가장 긴 공통 접두어를 찾습니다. 각 작업에서 두 글자를 바꿀 수 있습니다. 따라서 str1 =HERE, str2 =THERE이면 출력은 4가 됩니다. 두 번째 문자열은 문자를 교환하여 HERET으로 만들 수 있습니다. 따라서 가장 긴 접두사의 길이는 4입니다. 우리는 str2에서만 교환할 수 있다는 것을 알고 있습니다. 그리고 행렬의 길이는 최대화되어야 합니다. 따라서 아이디어는 str1을 탐색하고 s
하나의 행렬이 주어진다고 가정합니다. 매트릭스에서 공동의 수를 찾아야 합니다. 하나의 요소를 둘러싸고 있는 다른 모든 요소가 요소보다 클 때 하나의 요소는 캐비티로 표시됩니다. 따라서 행렬이 다음과 같은 경우 - 4 5 6 7 1 5 4 5 6 따라서 출력은 1입니다. 우리는 단순히 주변 요소를 확인하고 결정합니다. 예시 #include<iostream> #define MAX 100 using namespace std; int numberOfCavities(int array[][MAX], int n) { &n
차수가 n인 정사각형 행렬이 하나 있다고 가정합니다. 그것은 모든 독특한 요소를 가지고 있습니다. 따라서 경로를 따라 있는 모든 셀이 1의 차이로 증가하는 순서가 되도록 최대 길이 경로를 찾아야 합니다. 한 셀에서 네 방향으로 이동할 수 있습니다. 왼쪽, 오른쪽, 위쪽 및 아래쪽. 따라서 행렬이 다음과 같은 경우 - 1 2 9 5 3 8 4 6 7 따라서 출력은 4가 됩니다. 가장 긴 경로는 6→7→8→9이므로 이 문제를 해결하기 위해 우리는 이 아이디어를 따를 것입니다. 모든 셀에서 시작하는 가장 긴 경로를 계산합니다
n개의 요소가 있는 하나의 배열이 있다고 가정합니다. 문제는 정확히 k개의 홀수를 갖는 가장 긴 하위 배열을 찾는 것입니다. 따라서 A =[2, 3, 4, 11, 4, 12, 7]이고 k =1이면 출력은 4가 되고 하위 배열은 [4, 11, 4, 12]가 됩니다. 슬라이딩 윈도우를 사용하여 해결할 수 있습니다. 작업은 아래와 같습니다 - 최대:=0, 개수:=0, 시작:=0 0 ~ n – 1 범위의 i에 대해 다음을 수행합니다. arr[i] mod 2가 0이 아니면 카운트를 1 증가시킵니다. k 및 시작 <=i, 다음을 수행합니
정렬되지 않은 배열 A와 두 개의 숫자 x와 y가 있다고 가정합니다. A에서 x와 y 사이의 최소 거리를 찾아야 합니다. 배열에는 중복 요소도 포함될 수 있습니다. 따라서 배열이 A =[2, 5, 3, 5, 4, 4, 2, 3], x =3 및 y =2인 경우 3과 2 사이의 최소 거리는 1입니다. 이 문제를 해결하려면 다음 단계를 따라야 합니다. 배열을 왼쪽에서 오른쪽으로 탐색하고 x 또는 y가 발견되면 중지합니다. 그런 다음 해당 위치의 인덱스를 prev에 저장합니다. 이제 인덱스 prev 이후의 배열을 순회합니다. 현재 인덱
숫자 n이 있고 n개의 면이 있는 볼록 다각형에 대한 대각선의 수를 찾아야 한다고 가정합니다. 따라서 n =5이면 대각선 개수는 5가 됩니다. 이것은 n면 볼록 다각형이므로 각 꼭짓점에서 n – 3개의 대각선을 그릴 수 있으며 두 면의 인접한 꼭짓점과 자신을 남깁니다. 따라서 n개의 정점에 대해 n*(n-3)이 되지만 두 번 고려하므로 n(n – 3)/2가 됩니다. 예시 #include<iostream> using namespace std; int diagonalCount(int n) { retu
두 개의 정수 N과 M이 있다고 가정합니다. 주어진 연산을 수행하여 N에서 M에 도달하는 최소 단계 수를 찾아야 합니다. - x에 2를 곱하면 x는 2*x가 됩니다. 숫자 x에서 1을 빼면 x – 1이 됩니다. N =4이고 M =6이면 출력은 2가 됩니다. 따라서 N에 대해 2번 작업을 수행하면 N이 3이 되고 업데이트된 N 값에 대해 1번 작업을 수행하므로 2 * 3 =6이 됩니다. 따라서 최소 단계 수는 2입니다. 이 문제를 해결하기 위해 우리는 다음 규칙을 따를 것입니다 - M에서 시작하는 숫자 N을 취하는 것처럼 문
숫자 N이 있고 1, 10 및 25 통화 동전의 가치가 있는 무제한 동전이 있다고 가정합니다. 정확한 금액 N을 지불하기 위해 사용해야 하는 최소 코인 수를 구합니다. N이 14라고 가정하면 코인의 수는 10가치 코인 1개와 1가치 코인 4개로 5가 됩니다. 이 문제를 해결하려면 다음 단계를 사용해야 합니다. N <10이면 N개의 1 가치 동전을 반환합니다. 9, N <25인 경우 값을 10으로 나누어 결과를 얻고 나머지는 1개의 가치 코인으로 덮고 개수를 추가하여 결과를 얻습니다. 25이면 25로 나누고 결과를 취하고 결
산술 진행의 요소를 순서대로 나타내는 배열이 있다고 가정합니다. 하나의 요소가 누락되었습니다. 누락된 요소를 찾아야 합니다. 따라서 arr =[2, 4, 8, 10, 12, 14]인 경우 6이 없기 때문에 출력은 6입니다. 이진 검색을 사용하여 이 문제를 해결할 수 있습니다. 중간 요소로 이동한 다음 중간과 중간 옆의 차이가 diff와 같은지 확인합니다. 그렇지 않은 경우 누락된 요소가 인덱스 중간과 중간 + 1 사이에 존재합니다. 중간 요소가 AP의 n/2번째 요소인 경우 누락된 요소는 오른쪽 절반에 있고, 그렇지 않으면 왼쪽
하나의 행렬 또는 NxN 차수가 있다고 가정합니다. 행렬의 모든 열과 최대 차이를 형성하는 요소 쌍을 찾아야 합니다. 따라서 행렬이 다음과 같은 경우 - 1 2 3 5 3 5 9 6 7 따라서 출력은 8이 됩니다. 쌍은 열 0의 (1, 9)이므로 아이디어는 간단합니다. 각 열의 최대 요소와 최소 요소 간의 차이를 찾기만 하면 됩니다. 그런 다음 최대 차이를 반환합니다. 예 #include<iostream> #define N 5 using namespace std; int maxVal(int x, int y){
기하학적 진행 요소를 순서대로 나타내는 배열이 있다고 가정합니다. 하나의 요소가 누락되었습니다. 누락된 요소를 찾아야 합니다. 따라서 arr =[1, 3, 27, 81]이면 9가 없기 때문에 출력은 9입니다. 이진 검색을 사용하여 이 문제를 해결할 수 있습니다. 중간 요소로 이동한 다음 중간과 중간 옆의 비율이 공통 비율과 같은지 여부를 확인합니다. 그렇지 않으면 누락된 요소가 인덱스 중간과 중간 + 1 사이에 존재합니다. 중간 요소가 GP의 n/2번째 요소이면 누락된 요소는 오른쪽 절반에 있고 그렇지 않으면 왼쪽 절반에 있습니다
세 개의 정수, b, x가 있다고 가정합니다. 작업은 ab에 가장 가까운 x의 배수를 구하는 것입니다. 따라서 a =5, b =4 및 x =3이면 출력은 624가 됩니다. 54 =625이고 624는 625에 가장 가까운 3의 배수이기 때문입니다. 작업은 간단합니다. 이 문제를 해결하려면 다음 단계를 따라야 합니다 - 숫자 계산 :=ab 그런 다음 f :=(num/x)의 바닥을 찾습니다. 이제 왼쪽에서 가장 가까운 요소는 cl =x * f가 되고 오른쪽은 cr =x * (f + 1)가 됩니다. 마지막으로 가장 가까운 숫자는 mi
두 개의 정수 N과 K가 있고 모든 1 1을 충족하는 정확히 K개의 요소가 있도록 처음 N개의 자연수의 순열 P를 찾아야 한다고 가정합니다. <=N. 따라서 N =3이고 K =1이면 출력은 2, 1, 3이 됩니다. 그리고 gcd(2, 1) =1, gcd(1, 2) =1, gcd(3, 3) =3 접근 방식은 간단합니다. 마지막 k개의 요소는 제자리에 유지하고 나머지 요소는 이동하여 i번째 요소는 (i + 1)번째 위치에 배치되고 (N - K)번째 요소는 다음 위치에 유지됩니다. gcd(x, x+1) =1이기 때문에 위치 1. 예시
숫자 n이 있고 3으로 나눌 수 있지만 6으로 나눌 수 없는 이 수의 순열을 찾아야 한다고 가정합니다. 그러한 값을 만들 수 없으면 -1을 반환합니다. 예를 들어, n이 336이면 출력은 363이 될 수 있습니다. 우리가 알고 있듯이 숫자는 6으로 나눌 수 있다는 것은 3과 2로 나눌 수 있음을 의미합니다. 따라서 3으로 나눌 수 있는 각 짝수는 6으로 나눌 수 있습니다. , 이상하게도 결과가 됩니다. 예 #include<iostream> #include<cmath> using namespace std; in
n개의 정수가 있는 배열 A가 있다고 가정합니다. K가 소수이고 A[i] mod K가 K의 가능한 모든 값 중에서 모든 유효한 i에 대해 최대인 하나의 요소 K를 찾아야 합니다. 그러한 숫자가 발견되지 않으면 -1을 반환합니다. 예를 들어, A =[2, 10, 15, 7, 6, 8, 13]이면 출력은 13이 됩니다. 세 개의 소수 2, 7, 13이 있습니다. A[i]의 가능한 최대값 mod 2는 1, (15 mod 2), 7의 경우 6 mod 7 =6, 13의 경우 10 mod 13 =10입니다. 이것이 최대값입니다. A[i] m
숫자 n이 있다고 가정합니다. 1에서 n 사이의 소수의 곱을 찾아야 합니다. 따라서 n =7인 경우 출력은 2 * 3 * 5 * 7 =210과 같이 210이 됩니다. 우리는 모든 소수를 찾기 위해 에라토스테네스의 체 방법을 사용할 것입니다. 그런 다음 이들의 곱을 계산합니다. 예 #include<iostream> using namespace std; long PrimeProds(int n) { bool prime[n + 1]; for(int i = 0; i<=n; i+
문자열이 있다고 가정합니다. 반복되는 첫 번째 문자를 찾아야 합니다. 문자열이 Hello Friends인 경우 첫 번째 반복 문자는 l이 됩니다. l이 차례로 두 개 있기 때문입니다. 이를 해결하기 위해 해싱 기법을 사용합니다. 하나의 해시 테이블을 만들고 각 문자를 하나씩 스캔하고 문자가 없으면 해시 테이블에 삽입하고 이미 있으면 해당 문자를 반환합니다. 예시 #include<iostream> #include<unordered_set> using namespace std; char getFirstRepeat