단어 목록과 너비가 k라고 가정하고 각 행에 정확히 k개의 문자가 있고 텍스트가 완전히 정렬되도록 텍스트를 정렬해야 합니다. 여기서 우리는 각 줄에 삽입할 수 있는 만큼 단어를 포장할 것입니다. 그리고 필요한 경우 각 행에 정확히 k개의 문자가 있도록 추가 공백 을 채울 것입니다. 여기에서 단어 사이의 추가 공백은 가능한 한 균등하게 분배되어야 합니다. 줄의 공백 수가 단어 사이에 균등하게 분할되지 않으면 왼쪽의 빈 슬롯이 오른쪽의 슬롯보다 더 많은 공백이 할당됩니다. 텍스트의 마지막 줄은 왼쪽 정렬되어야 하며 단어 사이에 추가
nums라고 하는 숫자 목록과 다른 값 k가 있다고 가정하면, 합이 최대가 되도록 겹치지 않고 비어 있지 않은 하위 목록 k를 찾아야 합니다. k는 nums의 크기보다 작거나 같다고 생각할 수 있습니다. 따라서 입력이 nums =[11, -1, 2, 1, 6, -24, 11, -9, 6] k =3과 같으면 하위 목록을 선택할 수 있으므로 출력은 36이 됩니다. , -1, 2, 1, 6], [11], [6] [19, 11, 6] =36의 합을 구합니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − n :=숫자 크기 n이
nums라는 숫자 목록과 다른 값 k가 있다고 가정하고 각 부분 집합의 합이 동일한 k개의 다른 부분 집합으로 num을 분할할 수 있는지 확인해야 합니다. 따라서 입력이 nums =[4, 2, 6, 5, 1, 6, 3] k =3과 같으면 출력은 다음과 같이 분할할 수 있으므로 True가 됩니다. [6, 3], [6 , 2, 1] 및 [4, 5]. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − check() 함수를 정의하면 배열 v가 필요합니다. 초기화 i의 경우:=1, i
nums라는 숫자 목록이 있다고 가정하고 이제 합이 동일하고 최대인 두 집합을 찾은 다음 합 값을 찾습니다. 따라서 입력이 nums =[2, 5, 4, 6]과 같으면 세트가 [2, 4] 및 [6]이므로 출력은 6이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 합계 :=0 num의 각 숫자 i에 대해 다음을 수행합니다. 합계 :=합 + i n :=숫자 크기 (n + 1) x (2 * sum + 5) 크기의 2D 배열 dp 하나를 정의하고 -1로 채움 dp[0, 합계] :=0 초기화 i :=1의 경우, i <=
문자열 s가 있다고 가정하면 s의 가장 긴 접두사를 찾아야 하며, 이는 접미사이기도 합니다(자체 제외). 그러한 접두사가 없으면 단순히 빈 문자열을 반환합니다. 따라서 입력이 madam과 같으면 출력은 m이 되고 자신을 제외한 4개의 접두사가 있습니다. 이들은 m, ma, mad, mada 및 m, am, dam, adam과 같은 4개의 접미사입니다. 접미사이기도 한 가장 큰 접두사는 m으로 지정됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − lps() 함수를 정의하면 s가 걸립니다. n :=s의 크기
잠재적으로 겹칠 수 있는 간격 목록(포함)이 있다고 가정합니다. 이제 하나의 간격을 삭제한 다음 나머지 간격을 병합하고 남은 간격의 수를 계산하는 작업이 있다고 가정합니다. 제거 후 가능한 남은 간격의 최대 수를 찾아야 합니다. 따라서 입력이 간격 =[ [5, 8], [6, 7], [7, 10], [9, 11]]과 같으면 출력은 2가 됩니다. 이는 - 간격 [5, 8]을 삭제하면 병합으로 [6, 11]이 됩니다. 간격 [6, 7]을 삭제하면 병합으로 [5, 11]이 됩니다. 간격 [7, 10]을 삭제하면 병합으로
숫자 n이 있다고 가정하고 그 숫자의 다음으로 큰 순열을 찾아야 합니다. n이 이미 가장 큰 순열에 있으면 가장 작은 순열로 회전합니다. 따라서 입력이 n =319와 같으면 출력은 391이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 함수 makeArray()를 정의하면 x가 필요합니다. ret 배열 정의 x가 0이 아닌 동안 − ret의 끝에 x mod 10 삽입 x :=x / 10 ret 배열 반전 리턴 렛 Combine() 함수를 정의하면 배열 v가 필요합니다.
숫자 n이 있다고 가정합니다. 이제 다음 중 하나를 수행할 수 있는 연산을 고려하십시오. 1. n을 1로 감소 2. n이 짝수이면 n / 2로 감소 3. n이 3으로 나누어 떨어지면 2로 감소 * (n / 3) 마지막으로 찾기 n을 0으로 줄이는 데 필요한 최소 연산 수. 따라서 입력이 n =16과 같으면 출력은 5가 됩니다. n =16인 경우에도 n/2만큼 4번 감소하면 1이 됩니다. 그런 다음 1을 줄여 0을 얻습니다. 따라서 총 5 작업. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 하나의 맵 dp 정의
두 개의 목록 판매 및 구매자가 있다고 가정합니다. 판매의 각 요소에는 [일, 가격] 형식의 두 값이 포함되어 있으며 이는 패키지가 해당 날짜에만 해당 가격에 판매 가능함을 나타냅니다. 그리고 [payday, amount] 형식의 구매자의 각 요소는 구매자가 월급날 이후에 지출할 금액이 있음을 나타냅니다. 각 구매자가 최대 하나의 패키지를 구입할 수 있고 각 패키지를 한 사람에게만 판매할 수 있는 경우 구입할 수 있는 최대 패키지 수를 찾으십시오. 따라서 입력이 판매 =[[0, 5], [0, 5], [0, 6], [1, 4], [
패턴 p와 문자열 str이 있다고 가정하고 str이 동일한 패턴을 따르는지 여부를 확인해야 합니다. 다음은 패턴의 문자와 str의 비어 있지 않은 단어 사이에 전단사절이 있음을 의미합니다. 따라서 입력이 pattern =cbbc, str =word pattern pattern word와 같으면 출력은 True가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − strcin :=str 배열 단어 정의 strcin의 각 단어에 대해 단어 끝에 단어 삽입 하나의 맵 p2i 정의 나는 :=
이 문제에서는 N개의 정수와 정수 m의 배열 arr[]이 제공됩니다. 우리의 임무는 액세스할 때마다 최대값이 감소할 때 배열에서 최대값을 찾는 프로그램을 만드는 것입니다. 문제 설명 − 배열의 최대 요소의 최대 합을 찾고 최대값을 1k배로 줄여야 합니다. 문제를 이해하기 위해 예를 들어보겠습니다. 입력 arr[] = {3, 6, 7, 8, 8}, k = 3 출력 설명 First iteration: array before = {3, 6, 7, 8, 8}, max = 8, sum = 8, array after update =
원형으로 배치된 노드의 수를 나타내는 숫자 n이 있다고 가정합니다. 모든 노드가 모서리로 연결되고 모서리가 서로 교차하지 않도록 n/2개의 모서리를 배치할 수 있는 방법의 수를 찾아야 합니다. 답이 매우 크면 결과 모드 10^9 + 7을 반환합니다. 따라서 입력이 n =4와 같으면 아래와 같이 그룹화할 수 있으므로 출력은 2가 됩니다. - 이 문제를 해결하기 위해 다음 단계를 따릅니다. − (n/2 + 1) 크기의 배열 dp 정의 dp[0] :=1, dp[1] :=1 m :=10^9+7 initialize
이 문제에서는 n개의 정수 값으로 구성된 배열 arr[]이 제공됩니다. 그리고 Q는 각각 정수 k를 갖는 쿼리입니다. 우리의 임무는 Suffix에서 고유한 정수의 수에 대한 쿼리를 해결하는 프로그램을 만드는 것입니다. 문제 설명 − 접미사에서 고유한 정수에 대한 쿼리를 해결해야 합니다. 각 쿼리에 대해 k에서 n까지 고유한 요소의 수를 찾아야 합니다. 즉, arr[k]에서 arr[n]까지 고유한 요소를 계산해야 합니다. 선택된 배열은 1개의 색인이 생성되었습니다. 문제를 이해하기 위해 예를 들어보겠습니다. 입력 arr[ ]
이 문제에서는 n개의 범위(L, R), L-R로 구성된 2차원 행렬 arr[][2]가 제공됩니다. 그리고 Q는 각각 정수 값으로 구성된 쿼리를 수행합니다. 우리의 임무는 숫자가 L-R의 N 범위에 있는지 확인하기 위해 쿼리를 해결하는 프로그램을 만드는 것입니다. 문제 설명 − 여기에서 쿼리의 각 요소가 범위 중 하나에 있도록 각 쿼리를 해결합니다. 범위가 중복될 수 없습니다. 문제를 이해하기 위해 예를 들어보겠습니다. 입력 arr[n][2] = { {5, 7}, {1, 3}, {9, 12} } n = 3 Q = 2, que
이 문제에서 원의 가장자리에 있는 n개의 상자를 나타내는 숫자 n이 주어집니다. 그리고 각각 두 개의 정수, 및 b로 구성된 Q 쿼리가 있습니다. 우리의 임무는 서클에서 상자를 결합하는 것이 가능한지 확인하기 위해 쿼리를 해결하는 프로그램을 만드는 것입니다. 문제 설명 − 각 쿼리를 풀기 위해 마지막 쿼리의 상자 교차가 방해되지 않는 방식으로 상자 a와 상자 b를 막대로 연결할 가능성을 확인해야 합니다. 가능을 인쇄해야 합니다. 또는 불가능 조건에 따라. 문제를 이해하기 위해 예를 들어보겠습니다. 입력 n = 6 Q = 3 Q
2차원 이진 행렬이 있다고 가정하고 모두 1인 부분행렬의 총 수를 찾아야 합니다. 따라서 입력이 다음과 같으면 1 1 0 1 1 0 0 0 1 5개의 1 x 1 행렬과 2개의 2 x 1 행렬이 있으므로 출력은 10이 됩니다. 2개의 1 x 2 행렬. 그리고 하나의 2 x 2 매트릭스. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − getAns() 함수를 정의하면 배열 a가 필요합니다. 렛 :=0 n :=a의 크기 n 크기의 배열 v 정의 하나의 스택 정의 initialize i :
이 문제에서 문자열 str, 각각 substring[L...R]에 대한 두 값 L과 R로 구성된 쿼리의 Q 수를 받습니다. 우리의 임무는 하위 문자열[L…R]이 회문인지 여부를 확인하기 위해 쿼리를 해결하는 프로그램을 만드는 것입니다. 문제 설명 − 각 질의를 풀기 위해서는 L~R 범위 내에서 생성된 부분 문자열이 회문인지 아닌지를 확인해야 한다. 문제를 이해하기 위해 예를 들어보겠습니다. 입력 str = “abccbeba” , Q = 3 Query[][] = {{1, 4}, {0, 6}, {4, 6}}
이 문제에서 크기가 n인 배열 arr[]이 주어지고 각각 2개의 값 L과 R로 구성된 Q 쿼리가 제공됩니다. 우리의 임무는 L번째 가장 작은 숫자와 R번째로 작은 숫자입니다. 문제 설명 − 각 쿼리를 해결하려면 L번째로 작은 숫자와 R번째로 작은 숫자의 인덱스를 찾아야 합니다. 그리고 이 지수들의 차이를 찾으세요. 문제를 이해하기 위해 예를 들어 보겠습니다. 입력 arr[] = {8, 4, 1, 5, 2} Q = 2 Queries[][] = {{2, 4}, {1, 5}} 출력 1 2 설명 For {2, 4}: 2nd small
nums라는 숫자 목록이 있다고 가정합니다. 이제 회문인 일부 하위 목록을 삭제하는 작업을 고려해 보겠습니다. 목록이 비어 있도록 필요한 최소 작업 수를 찾아야 합니다. 따라서 입력이 nums =[6, 2, 4, 4, 2, 10, 6]과 같으면 출력은 2가 됩니다. 하위 목록 [2, 4, 4, 2]를 먼저 제거한 다음 목록은 [6, 10, 6]과 같습니다. 이것도 회문이므로 목록을 비우려면 제거하십시오. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 105 x 105 크기의 배열 dp를 정의합니다. dfs() 함
두 개의 소문자 문자열 s와 t가 있다고 가정합니다. 이제 s에 있는 모든 문자를 다른 문자로 바꾸는 작업을 고려하십시오. 이 작업을 여러 번 수행할 수 있다면 s가 t로 변환될 수 있는지 여부를 확인해야 합니다. 따라서 입력이 s =eye t =pip와 같으면 출력은 True가 됩니다. e를 p로, y를 i로 바꿀 수 있기 때문입니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 하나의 맵 m1 및 다른 맵 m2 정의 n :=s의 크기 initialize i :=0의 경우, i