문자열 s가 있다고 가정합니다. s는 모든 영문자와 공백을 포함할 수 있습니다. 문자열에서 마지막 단어의 길이를 찾아야 합니다. 마지막 단어가 없으면 0을 반환합니다. 따라서 입력이 I love Programming과 같으면 출력은 11이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − n :=0 문자열의 각 단어 temp에 대해 - n :=온도의 크기 반환 n 예 더 나은 이해를 위해 다음 구현을 살펴보겠습니다. − #include <bits/stdc++.h> using n
정렬된 연결 목록이 있다고 가정합니다. 각 요소가 한 번만 표시되도록 모든 중복 항목을 삭제해야 합니다. 따라서 입력이 [1,1,2,3,3,3,4,5,5]와 같으면 출력은 [1,2,3,4,5]가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 더미 :=값 -inf로 새 노드를 만듭니다. 더미의 다음 :=머리 curr =더미 curr이 0이 아닌 동안 수행 - 다음 =현재의 다음 동안(next는 null이 아니며 next의 val은 curr의 val과 동일) 다음을 수행합니다. -
두 개의 이진 트리가 있다고 가정합니다. 같은지 아닌지 확인하는 함수를 정의해야 합니다. 우리는 바이너리 트리가 구조적으로 동일하고 노드가 동일한 값을 가질 때 동일한 것으로 간주된다는 것을 알고 있습니다. 따라서 입력이 [1,2,3],[1,2,3]과 같으면 출력은 True가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − isSameTree라는 함수를 정의하면 두 개의 트리 노드 p와 q가 필요합니다. p가 NULL과 같고 q가 NULL과 같으면 - true를 반환 p가 NULL과 같거나
이진 트리가 있다고 가정합니다. 우리는 그 나무의 최소 깊이를 찾아야 합니다. 우리가 알고 있듯이 최소 깊이는 루트 노드에서 가장 가까운 리프 노드까지의 최단 경로를 따라 있는 노드의 수입니다. 따라서 입력이 다음과 같으면 그러면 출력은 2가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 트리 노드의 배열 정의 aa 끝에 루트 삽입 트리 노드의 다른 배열 ak 정의 레벨 :=0 루트가 null이면 - 0 반환 aa의 크기가 0이 아닌 동안 수행 - 배열 ak을 지
k ≤ 33인 음수가 아닌 인덱스 k가 있다고 가정하면 파스칼 삼각형의 k번째 인덱스 행을 찾아야 합니다. 따라서 입력이 3과 같으면 출력은 [1,3,3,1]이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − rowIndex + 1 크기의 배열 파스칼을 정의하고 0으로 채웁니다. 초기화 r :=0의 경우, r <=rowIndex일 때 업데이트(r을 1만큼 증가), - 수행 파스칼[r] :=1, 이전 :=1 initialize i :=1의 경우, i
양의 정수가 있다고 가정합니다. Excel 시트에 나타나는 해당 열 제목을 찾아야 합니다. 따라서 [1 :A], [2 :B], [26 :Z], [27 :AA], [28 :AB] 등 따라서 입력이 28과 같으면 출력은 AB가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − n이 0이 아닌 동안 수행 - n :=n - 1 res :=res + n mod 26 + A의 ASCII n :=n / 26 배열 res 반전 반환 해상도 예시 더 나은 이해를 위해 다음 구현을 살펴보겠습니다
두 개의 문자열 s와 t가 있다고 가정합니다. 동형인지 아닌지 확인해야 합니다. s의 문자를 t로 바꿀 수 있는 경우 두 문자열은 동형이라고 합니다. 모든 문자는 문자 순서를 유지하면서 다른 문자로 대체되어야 합니다. 두 캐릭터는 같은 캐릭터에 매핑될 수 없지만 한 캐릭터는 자신에게 매핑될 수 있습니다. 따라서 입력이 s =egg, t =add와 같으면 e가 a에 매핑될 수 있고 g가 d에 매핑될 수 있으므로 출력은 true가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 크기가 256인 배열 arr를 정의하
배열과 정수 k가 있다고 가정하고 nums[i] =nums[j]와 같은 두 개의 고유한 인덱스 i와 j가 배열에 있는지 확인해야 합니다. i와 j의 절대차는 기껏해야 k입니다. 따라서 입력이 [1,2,4,1]이고 k =3이면 출력은 True 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 쌍의 배열 nn 정의 initialize i :=0의 경우 i − 숫자의 크기일 때 업데이트(i를 1만큼 증가), − nn의 끝에 {nums[i], i} 삽입 배열 nn 정렬 initialize i :=1의 경
대기열을 사용하여 하나의 스택을 구현하려고 한다고 가정합니다. 스택에 대해 이러한 메서드를 정의해야 합니다. push(x) - x를 스택에 푸시합니다. pop() - 스택에서 맨 위 요소 삭제 및 반환 top() - 스택에서 최상위 요소를 반환합니다. empty() - 스택이 비어 있는지 여부를 반환합니다. 따라서 push(10), push(20) 함수를 호출한 다음 pop(), pop()을 호출하면 출력은 20, 10이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 하나의 데크 q
패턴과 문자열 str이 있다고 가정하고 str이 동일한 패턴을 따르는지 찾습니다. 다음은 패턴의 문자와 str의 비어 있지 않은 단어 사이에 전단사절이 있음을 의미합니다. 따라서 입력이 pattern =cbbc, str =word pattern pattern word와 같으면 출력은 True가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − strcin :=str 단어 배열 정의 strcin의 각 단어에 대해 단어 끝에 단어 삽입 하나의 맵 p2i 정의 나는 :=0 pat :
Nim Game이라는 게임을 다른 플레이어와 한다고 가정해 보겠습니다. 한 플레이어가 교대로 1~3개의 돌을 제거할 때마다 돌 더미가 있습니다. 마지막 돌을 제거하는 사람이 승자가 됩니다. Player1은 첫 번째 차례에 돌을 제거합니다. 두 선수 모두 매우 영리하고 게임에 대한 최적의 전략을 가지고 있습니다. 플레이어 1이 더미에 있는 돌의 수를 감안할 때 게임에서 이길 수 있는지 여부를 결정하는 알고리즘을 고안해야 합니다. 따라서 입력이 5와 같으면 5개의 스톤이 있으므로 출력이 true가 되므로 처음에 player1이 1개의
정수가 있다고 가정합니다. 4의 거듭제곱인지 아닌지 확인해야 합니다. 따라서 입력이 16과 같으면 출력이 True가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − num <0이면 - 거짓을 반환 num &(num - 1)이 0이 아닌 경우 - 거짓을 반환 (num &01010101010101010101010101010101)이 0이면 - 거짓을 반환 true를 반환 예시 이해를 돕기 위해 다음 구현을 살펴보겠습니다. − #include <bits/stdc
배열이 두 개 있다고 가정합니다. 그들의 교차점을 찾아야 합니다. 따라서 입력이 [1,5,3,6,9],[2,8,9,6,7]과 같으면 출력은 [9,6]이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 두 개의 맵 mp1, mp2 정의 배열 res 정의 nums1의 x에 대해 (mp1[x] 1씩 증가) x의 경우 nums2 (mp2[x] 1씩 증가) mp1의 각 키-값 쌍 x에 대해 cnt :=0 cnt :=x 값과 mp2[x의 키]의 최소값 0이면 -
맞추기 게임을 한다고 가정해 보겠습니다. 이 게임의 속성은 다음과 같습니다 - 플레이어 1은 1에서 n까지의 숫자를 선택합니다. player2는 내가 선택한 번호를 추측해야 합니다. 플레이어 2가 잘못 추측할 때마다 플레이어 1은 플레이어 2에게 숫자가 더 높거나 낮은지 알려줍니다. 다음과 같이 3가지 가능한 결과를 반환하는 함수 추측(num)을 사용할 수 있습니다. - -1 − Player1의 번호가 더 낮습니다. 1 − Player1의 숫자가 더 높음 0 - 숫자가 일치합니다. 따라서 입력이 n =10,
소문자로만 구성된 두 개의 문자열 s와 t가 있다고 가정합니다. 이제 문자열 t는 문자열 s를 무작위로 섞어서 생성한 다음 임의의 인덱스에 문자를 하나 더 추가합니다. t에 추가된 문자를 찾아야 합니다. 따라서 입력이 mnopq,pqmnot과 같으면 출력은 t가 됩니다. 이것은 추가 문자입니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 합계 :=0, 합계 :=0 for initialize i :=0, i
정수가 있다고 가정합니다. 16진수로 변환하는 알고리즘을 고안해야 합니다. 음수의 경우 2의 보수 방법을 사용합니다. 따라서 입력이 254 및 -12와 같으면 출력은 각각 fe 및 fffffff4가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − num1이 0과 같으면 - 0 반환 숫자 :=숫자1 s :=빈 문자열 num이 0이 아닌 동안 수행 - temp :=num 모드 16 온도 <=9이면 - s :=s + temp를 숫자로 그렇지 않으면 s :=s +
소문자 또는 대문자로 구성된 문자열이 있다고 가정하면 해당 문자로 만들 수 있는 가장 긴 회문의 길이를 찾아야 합니다. 이제 문자열은 대소문자를 구분하므로 여기에서 Aa는 회문으로 간주되지 않습니다. 따라서 입력이 abccccdd와 같으면 빌드할 수 있는 가장 긴 회문 하나가 길이가 7인 dccaccd이므로 출력은 7이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 하나의 맵 MP 정의 s의 각 문자 i에 대해 (mp[i]를 1씩 증가) ma :=0, c :=0, ans :=0 mp의
비어 있지 않은 정수 배열이 있다고 가정합니다. 이 배열에서 세 번째 최대값을 찾아야 합니다. 세 번째 최대 숫자가 없으면 최대 숫자를 반환합니다. 문제는 선형 시간 복잡도를 사용하여 이 문제를 해결해야 한다는 것입니다. 따라서 입력이 [5,3,8,9,1,4,6,2]와 같으면 출력은 6이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − NULL로 a, b, c 초기화 initialize i :=0의 경우, i
문자열 s가 있다고 가정합니다. 문자열의 세그먼트 수를 계산해야 합니다. 여기서 세그먼트는 연속적인 문자 시퀀스(공백 없음)로 정의됩니다. 따라서 입력이 Hello, I love programming과 같으면 4개의 세그먼트가 있으므로 출력은 4가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − n :=0 initialize i :=0의 경우, i
계단 모양으로 만들고자 하는 n개의 동전이 있다고 가정하면 모든 k번째 행에는 정확히 k개의 동전이 있어야 합니다. 따라서 n이 있으면 형성할 수 있는 전체 계단 행의 총 수를 찾아야 합니다. 따라서 입력이 5와 같으면 출력은 2가 됩니다. 5개의 동전을 사용하면 두 개의 완전한 starecase 행을 만들 수 있고 마지막 행은 3개가 필요하지만 2- * ** ** 이것은 다음 공식을 사용하여 직접 수행할 수 있습니다. - $$\frac{\sqrt{(8n+1)}-1}{2}$$ 예시 더 나은 이해를 위해 다음 구현을 살펴보겠습