정수 배열 num이 있다고 가정하고 [lower, upper] 범위에 있는 범위 합계의 수를 찾아야 합니다. 범위 합 S(i, j)는 i ≤ j인 경우 인덱스 i에서 인덱스 j까지의 요소의 합으로 정의됩니다. 따라서 입력이 [-3,6,-1], lower =-2 및 upper =2와 같으면 범위가 [0,2]이므로 합계는 2, [2, 2], 합계는 -2입니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − mergeIt() 함수를 정의하면 배열 접두사, 시작, 중간, 끝, 아래, 위, i :=시작, j :=중간 + 1 tem
일부 봉투가 있다고 가정하고 이러한 봉투에는 높이와 너비 값이 쌍으로 있습니다. 두 번째 봉투의 높이와 너비가 모두 첫 번째 봉투의 높이와 너비보다 작으면 한 봉투를 다른 봉투에 넣을 수 있습니다. 그래서, 우리가 다른 봉투 안에 넣을 수 있는 최대 봉투 수는 몇 개입니까? 따라서 입력이 [[5,5], [6,4], [6,8], [2,3]]과 같으면 가장 작은 봉투가 [2,3]이므로 출력은 3이 됩니다. 다음 [5,5], 다음 [6,8]. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 높이를 기준으로 배열 v 정렬, 높이가
2D 행렬과 정수 k가 있다고 가정합니다. 합이 k보다 크지 않도록 행렬에서 직사각형의 최대 합을 찾아야 합니다. 따라서 입력이 다음과 같으면 - 1 0 1 0 -3 2 그리고 k =3이면 표시된 사각형의 합이 3이므로 출력은 3이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − maxSumSubmatrix() 함수를 정의하면 하나의 2D 배열 행렬과 k가 필요합니다. n :=행 번호, m :=열 번호 ans :=-inf l 초기화의 경우:=0, l
어떤 연산을 지원하는 데이터 구조를 만들고 싶다고 가정하고, 이러한 연산은 O(1) 시간 동안 수행되어야 합니다. 따라서 이러한 작업은 다음과 같습니다. - insert(x):컬렉션에 x 삽입 remove(x):컬렉션에서 x 삭제 getRandom():컬렉션에서 임의의 요소를 찾습니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 배열 번호 만들기 하나의 지도 만들기 insert() 함수를 정의하면 val이 필요합니다. ret :=val이 m에 없을 때 m[val] 끝에 숫자 크기 삽입 insert { val, siz
강을 건너는 개구리가 있다고 가정해 봅시다. 강은 x 단위로 나뉘며 각 단위에는 돌이 있을 수 있습니다. 개구리는 돌 위에서는 뛸 수 있지만 물에서는 뛸 수 없습니다. 여기에 오름차순으로 정렬된 돌의 위치 목록이 있습니다. 개구리가 마지막 돌에 착지하여 강을 건널 수 있는지 여부를 확인해야 합니다. 처음에 개구리는 첫 번째 돌 위에 있고 첫 번째 점프는 1 유닛이어야 한다고 가정합니다. 개구리의 현재 점프가 k 단위였을 때 다음 점프는 k - 1, k 또는 k + 1 단위여야 합니다. 그리고 개구리는 앞으로만 점프할 수 있습니다.
양의 정수 배열과 하나의 값 m이 있다고 가정합니다. 이 배열을 m개의 연속적인 하위 배열로 나눌 수 있습니다. 이 m개의 하위 배열 중에서 가장 큰 합을 최소화하는 알고리즘을 고안해야 합니다. 따라서 배열이 [7,2,4,10,9]이고 m =2인 경우 [7,2,4] 및 [10,9]와 같은 두 개의 하위 배열을 만들 수 있으므로 합계는 19가 됩니다. , 합계가 가장 큰 부분배열은 19입니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − splitArray() 함수를 정의하면 배열 v, m,이 사용됩니다. n :=v의 크
두 개의 값 n과 k가 있다고 가정합니다. 1에서 n 사이의 범위에서 사전식으로 k번째로 작은 정수를 찾아야 합니다. 따라서 입력이 n =14 및 k =3인 경우 시퀀스는 [1, 10, 11, 12, 13, 14, 2, 3, 4, 5, 6, 7이므로 출력은 11이 됩니다. , 8, 9], k번째 숫자는 11입니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − findKthNumber() 함수를 정의합니다. n, k, 커:=1 (k를 1씩 감소) k가 0이 아닌 동안 − steps :=calcSteps(n, curr, cu
N개의 숫자가 있는 배열 A가 있다고 가정합니다. 해당 배열의 하위 시퀀스 슬라이스는 0 <=K0
1000개의 양동이가 있고 그 중 하나는 유독하고 나머지는 물로 채워져 있다고 가정합니다. 모두 비슷해 보입니다. 돼지가 독을 마시면 15분 안에 죽습니다. 1시간 안에 독통을 찾기 위해 필요한 최소 돼지의 양은 얼마입니까? 이제 일반적인 경우를 고려하고 이에 대한 알고리즘을 고안하십시오. 따라서 일반적인 경우는 n개의 서로 다른 양동이가 있고 독을 마시는 돼지가 m분 이내에 죽는다면 p분 내에 독이 있는 양동이를 찾기 위해 몇 마리의 돼지가 필요합니까? 독이 있는 양동이가 정확히 하나 있습니다. n =1000, m =15 및
단어 목록이 있다고 가정합니다. 이 단어들은 구별됩니다. 주어진 단어 목록에서 연결된 모든 단어를 찾는 알고리즘을 고안해야 합니다. 연결된 단어는 실제로 주어진 배열에서 적어도 두 개의 더 짧은 단어로 완전히 구성된 문자열입니다. 따라서 단어가 [cow, cows, cowsgoatcows, goat, goatcowsgoat, hippopotamuses, deer, deercowgoatcow]와 같으면 출력은 [cowsgoatcows, 염소염소, 사슴소염소] 이 문제를 해결하기 위해 다음 단계를 따릅니다. − isPresent(
입력 n이 있다고 가정하고 두 n자리 숫자의 곱을 사용하여 만들 수 있는 가장 큰 회문을 찾아야 합니다. 숫자가 매우 크므로 1337을 사용하여 mod를 수행할 수 있습니다. 따라서 입력이 2라고 하면 답은 987, 987 =(99*91) mod 1337 =9009 mod 1337 =987이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 최대값 :=10^n – 1 최소값 :=최대값 / 10 minVal일 때 업데이트(h를 1만큼 감소), 수행 - 왼쪽 :=h, 오른쪽 :=0 0일 때 right =right *
숫자 목록이 있고 하나의 창 크기 k가 있다고 가정하면 슬라이딩 창 방식을 사용하여 중앙값 목록을 찾아야 합니다. 따라서 분포가 아래와 같으면 - 창 위치 중앙값 1 3 -1 -3 5 3 6 8 1 1 3 -1 -3 5 3 6 8 -1 1 3 -1 -3 5 3 6 8 -1 1 3 -1 -3 5 3 6 8 3 1 3 -1 -3 5 3 6 8 5 1 3 -1 -3 5 3 6 8 6 여기서 k는 3이고 결과는 [1,-1,-1,3,5,6]입니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 한 세트를 정의하십
Zuma 게임에 대해 생각해 봅시다. 테이블 위에 한 줄의 공이 있다고 가정하고 이 공은 빨간색(R), 노란색(Y), 파란색(B), 녹색(G) 및 흰색(W)으로 표시됩니다. 우리도 여러 공을 가지고 있습니다. 이제 매번 옆에서 공을 선택하여 줄에 삽입할 수 있습니다. 그런 다음 같은 색의 공이 3개 이상 모여 있는 경우에는 제거합니다. 더 이상 공을 제거할 수 없을 때까지 이 작업을 계속하십시오. 테이블에 있는 모든 공을 제거하기 위해 삽입해야 하는 최소한의 공을 찾아야 합니다. 모든 공을 제거할 수 없으면 -1을 반환합니다.
배열이 있다고 가정하고 이 배열에서 다음 조건을 충족하는 경우 한 쌍(A[i] 및 A[j])을 중요한 역 쌍으로 말할 것입니다. - i 2* nums[j]인 경우 중요한 역쌍의 수를 찾아야 합니다. 따라서 입력이 [2,8,7,7,2]와 같으면 결과는 3이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − ans :=0 merge() 함수를 정의하면 배열이 필요합니다(낮음, 중간, 높음) k :=높음 - 낮음 + 1 k 크기의 어레이 온도 정의 i :=낮음, j =중간 + 1, k :=0 첫 번째 :=중간 + 1
한 회사 A가 곧 IPO를 시작하려고 한다고 가정해 보겠습니다. B에게 좋은 가격에 자신의 주식을 판매하기 위해 A는 IPO 전에 자본을 늘리는 몇 가지 프로젝트를 진행하려고 합니다. A는 제한된 자원을 가지고 있으며 IPO 전에 최대 k개의 개별 프로젝트만 완료할 수 있습니다. 최대 k개의 개별 프로젝트를 완료한 후 총 자본을 최대화하는 가장 좋은 방법을 설계하여 A를 도울 수 있습니까? 여러 프로젝트가 있다고 가정합니다. 각 프로젝트 i에 대해 순수 이익 Pi가 있고 해당 프로젝트를 시작하려면 Ci의 최소 자본이 필요합니다.
n개의 슈퍼 세탁기가 한 줄에 있다고 가정해 봅시다. 처음에는 각 세탁기에 드레스가 있거나 비어 있습니다. 이제 각 이동에 대해 m(1 ≤ m ≤ n) 세탁기를 선택하고 각 세탁기의 드레스 하나를 인접한 세탁기 중 하나로 전달할 수 있습니다. 행의 왼쪽에서 오른쪽으로 각 세탁기의 드레스 수를 나타내는 하나의 정수 배열이 있다고 가정하면 모든 세탁기가 동일한 수의 옷을 갖도록 최소 이동 수를 찾아야 합니다. 할 수 없으면 -1을 반환합니다. 따라서 입력이 [1,0,5]와 같을 때 출력은 3이 됩니다. 이것은 5를 0으로 보내기 때문
=1으로 구성)을 가진 연속적인 상자를 선택하고 제거하고 k*k 포인트를 얻을 수 있습니다. 따라서 입력이 − [1,3,2,2,2,4,4,3,1]과 같으면 출력은 21이 됩니다. 얻을 수 있는 최대 포인트를 찾으세요. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − solve() 함수를 정의하면 배열 상자, i, j, k, 하나의 3D 배열 dp, j이면 - 0을 반환 dp[i, j, k]가 -1과 같지 않으면 - dp[i, j, k]를 반환 ret :=-inf 조건 i + 1 <=j 및 상자[i + 1]가 상자[
양의 정수 n이 있다고 가정하고 길이가 n인 가능한 모든 출석 기록의 수를 찾아야 하며 이는 보상 가능한 것으로 간주됩니다. 답변이 매우 클 수 있으므로 mod 109 + 7을 사용하여 반환합니다. 학생 출석 기록에서 문자열은 다음 세 문자만 포함할 수 있습니다. - A는 부재를 의미합니다. L은 늦다는 뜻입니다. P는 현재를 의미합니다. 하나 이상의 A(결석) 또는 2개 이상의 연속 L(늦음)을 포함하지 않는 경우 하나의 출석은 보상 가능한 것으로 처리됩니다. 그래서 우리는 최대 점수를 찾아야 합니다. 입력이 2와 같으면
숫자 n이 있다고 가정하면 회문인 가장 가까운 숫자를 가져와야 합니다. 따라서 회문은 절대 차이가 작은 수보다 작거나 클 수 있습니다. 따라서 숫자가 145와 같으면 결과는 141이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − sn :=n의 크기 sn이 1과 같으면 - n[0]을 1만큼 감소시키고 크기가 n[0]인 1의 문자열을 반환합니다. half_sn :=(sn + 1) / 2 half_val :=stol(인덱스 0에서 half_sn까지 n의 부분 문자열 배열 후보 정의 ={10^(sn) – 1, 10^(
양의 정수 n이 있다고 가정합니다. n보다 작거나 같은 음이 아닌 정수를 찾아야 합니다. 제약 조건은 이진 표현이 연속적인 표현을 포함하지 않는다는 것입니다. 따라서 입력이 7이면 답은 5가 됩니다. 5의 이진 표현은 101이기 때문입니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − convert() 함수를 정의하면 n이 필요합니다. ret :=빈 문자열 n이 0이 아닌 동안 − ret :=ret + (n 모드 2) n :=오른쪽 시프트 n, 1회 반환 메인 방법에서 다음을 수행하십시오. - bits :=conver