문자열 s가 있다고 가정하고 모든 문자를 사용하여 생성할 수 있는 고유한 회문의 수를 찾아야 합니다. 답이 매우 크면 결과를 10^9 + 7로 수정합니다. 따라서 입력이 s =xyzzy와 같으면 zyxyz 및 yzxzy를 만들 수 있으므로 출력은 2가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − m =10^9+7 char_freq :=s의 각 문자와 그 빈도를 담고 있는 지도 홀수 :=0 char_freq의 각 문자 k 및 빈도 v에 대해 수행 v mod 2가 1이면 홀수 :=홀수
이진 트리가 있다고 가정하고 동일한 트리를 찾아야 하지만 모든 노드의 값은 해당 값 + 왼쪽 및 오른쪽 하위 트리의 모든 합계로 대체됩니다. 따라서 입력이 다음과 같으면 그러면 출력은 이 문제를 해결하기 위해 다음 단계를 따릅니다. − tree_sum() 함수를 정의합니다. 이것은 나무의 뿌리를 내릴 것입니다 루트가 null이면 0 반환 루트 데이터 :=tree_sum(루트의 왼쪽) + tree_sum(루트의 오른쪽) + 루트의 데이터 루트 데이터 반환 기본 방법에서 다음을 수행
숫자와 비용이라는 두 개의 숫자 목록이 있다고 가정합니다. 이제 비용 비용[i]에 대해 nums[i]를 늘리거나 줄일 수 있는 작업이 있다고 가정합니다. 우리는 이러한 연산을 얼마든지 수행할 수 있으며 모든 요소를 숫자로 동일하게 만들고 싶습니다. 필요한 최소 총 비용을 찾아야 합니다. 따라서 입력이 nums =[3, 2, 4] 비용 =[1, 10, 2]와 같으면 출력은 5가 됩니다. 마치 비용 1에 대해 숫자 3을 2로 줄일 수 있는 것과 같습니다. 그런 다음 각각 2의 비용으로 4를 두 번 감소시킬 수 있습니다. 이 문제
1보다 큰 숫자 n이 있다고 가정하면 모든 소인수를 찾아 정렬된 순서로 반환해야 합니다. 우리는 소수의 곱으로 숫자를 쓸 수 있습니다. 그들은 소인수입니다. 그리고 동일한 소인수가 두 번 이상 나타날 수 있습니다. 따라서 입력이 42와 같으면 출력은 [2, 3, 7]이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − res:=새 목록 n mod 2가 0과 같을 때 do res 끝에 2 삽입 n :=n/2의 몫 3에서 (n의 제곱근) 범위에 있는 i에 대해 2단계에서 증가 n mod i가 0인 동안 do res
nums라는 숫자 목록이 있다고 가정하고 a^2 + b^2 =c^2와 같은 세 개의 숫자, b, c가 있는지 확인해야 합니다. 따라서 입력이 [10, 2, 8, 5, 6]과 같으면 출력은 8^2 + 6^2 =64+36 =100 =10^2와 같이 True가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − tmp :=모든 숫자의 제곱을 내림차순으로 나열한 목록 tmp의 각 인덱스 i와 해당 숫자 n에 대해 다음을 수행합니다. 기본:=n 왼쪽 :=i+1, 오른쪽 :=tmp의 크기 -1 왼쪽 <=오른쪽, do t :=두
네 개의 요소 [x1, y1, x2, y2]가 있는 목록으로 표시되는 직사각형이 있다고 가정합니다. 여기서 (x1, y1)은 왼쪽 아래 모서리의 좌표이고 (x2, y2)는 다음 좌표입니다. itstop-오른쪽 모서리. 교차 영역이 양수일 때 두 개의 직사각형이 겹칩니다. 따라서 모서리나 가장자리에서만 닿는 두 개의 직사각형은 겹치지 않습니다. 따라서 입력이 R1 =[0,0,2,2], R2 =[1,1,3,3]과 같으면 출력은 True가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − =R2[2] 또는 R1[2]<=R
문자열 s가 있다고 가정하고 그 안에 있는 첫 번째 반복 문자의 인덱스를 찾아야 합니다. 반복되는 문자를 찾을 수 없으면 -1을 반환합니다. 따라서 입력이 abcade와 같으면 a가 인덱스 3에 다시 있으므로 출력은 3이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 지도 문자 정의 0에서 s 크기의 범위에 있는 i에 대해 다음을 수행합니다. 문자에 s[i]이면 반환 그렇지 않으면 문자[s[i]] :=문자[s[i]] + 1 반환 -1 이해를 돕기 위해 다음 구현을 살펴보겠습니다. − 예 from
A라는 숫자 목록과 또 다른 숫자 k가 있다고 가정하고 가능한 요소 {A[k], A[A[k]], A[A[A[k]]], ..의 새 집합을 만들어야 합니다. . } 인덱스를 벗어나기 전에 중지합니다. 우리는 이 세트의 크기를 찾아야 하고, 그렇지 않으면 사이클이 있을 때 -1입니다. 따라서 입력이 A =[1,2,3,4,5,6,7], k =1과 같으면 출력은 A[1] =2, A[2] =3, A[3] =4, A[4] =5, A[5] =6, A[6] =7, 따라서 집합은 {2,3,4,5,6,7}이고 집합의 크기는 6. 이 문제를 해결하기
숫자 A의 목록이 있다고 가정하고 모든 중복 숫자를 찾아 마지막 항목을 제거해야 합니다. 따라서 입력이 [10, 30, 40, 10, 30, 50]과 같으면 출력은 [10, 30, 40, 50]이 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 보고:=새 지도 d:=새 지도 0에서 숫자 크기 범위의 i에 대해 nums[i]가 d에 없으면 d[숫자[i]]:=1 그렇지 않으면 d[숫자[i]] :=d[숫자[i]] + 1 i:=0 i <숫자의 크기인 동안 do n:=d[숫자[i]] nums[i]가 표시되지 않
두 개의 문자열 s와 t가 있다고 가정하고 s에서 1문자를 제거하여 t를 얻을 수 있는지 확인해야 합니다. 따라서 입력이 s =world, t =wrld와 같으면 출력은 True가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − i:=0 n:=s의 크기 내가
양수 n이 있다고 가정하고 모든 자릿수를 더하여 새 숫자를 얻습니다. 이제 10 미만이 될 때까지 이 작업을 반복합니다. 따라서 입력이 9625와 같으면 출력은 4가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − solve() 메서드를 정의하면 n이 걸립니다. n <10이면 반환 n s :=0 l :=(log(n) 밑 10 + 1)의 바닥 0일 때 수행 s :=s + (n 모드 10) n :=n / 10의 몫 l :=l - 1 반환 해결 이해를 돕기 위해 다음 구현을 살펴보겠습니다. − 예시 impo
문자열 s와 숫자 k가 있다고 가정하고 s에서 두 번 이상 발생하는 k-길이 부분 문자열sof s의 수를 찾아야 합니다. 따라서 입력이 s =xxxyyy, k =2와 같으면 출력은 2가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 본 :=새 목록 0에서 s - k 크기의 범위에 있는 i에 대해 t :=s의 부분 문자열 [인덱스 i에서 i + k - 1까지] 본 끝에 t 삽입 mp :=보이는 모든 고유한 요소 및 해당 발생에 대한 지도 발생이 1보다 큰 mp에서 각 요소의 모든 발생 합계를 반환 이해를
문자열이 있다고 가정하고 반복 문자열인지 여부를 확인해야 합니다. 따라서 입력이 string =helloworldhelloworld와 같으면 출력은 True가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − n :=s의 크기 findFactors() 함수를 정의합니다. n 소요됩니다. f :=새로운 세트 i :=1 동안 i * i <=n, do n mod i가 0과 같으면 f에 (n / i)의 몫 삽입 i를 f에 삽입 나는 :=나는 + 1 반환 f 메인 방법에서 다음을 수행하십시오. - 사실 :=findFa
A와 B라고 하는 두 개의 숫자 목록이 있다고 가정합니다. A에서 일부 하위 목록을 가져와서 반대로 해야 합니다. 그런 다음 A를 B로 바꿀 수 있는지 확인하십시오. 여러 번 하위 목록을 가져와서 되돌릴 수 있습니다. 따라서 입력이 A =[2, 3, 4, 9, 10], B =[4, 3, 2, 10, 9]와 같으면 출력은 [2,3,4]를 반대로 할 수 있으므로 True가 됩니다. ] 및 [9,10]. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − res :=지도, 처음에는 비어 있음 숫자 단위의 각 n에 대해 다음을 수행합
공백으로 구분된 일련의 단어가 있다고 가정합니다. 단어의 순서를 바꿔야 합니다. 따라서 입력이 Hello world, I love python programming과 같으면 출력은 programming python love I world, Hello가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − temp :=공백을 사용하여 s를 분할하여 단어 목록 만들기 temp :=목록을 뒤집습니다. temp 공백 구분 기호를 사용하여 temp의 요소를 결합하여 문자열을 반환합니다. 이해를 돕기 위해 다음 구현을 살펴보겠
매개변수 P,O,E,T가 있다고 가정합니다. 우리가 주식 시장에 투자하고 싶은 P 달러의 원금이 있다면. 주식 시장은 처음으로 E를 반환한 다음 연간 퍼센트 이자 사이를 번갈아 가며 최소한 Tdollars에 도달하는 데 몇 년이 걸릴지 확인해야 합니다. 따라서 입력이 P =200, O =10, E =25, T =300과 같으면 출력은 첫 해와 같이 3이 되며 이자는 25%이므로 200+50 =250이 됩니다. 다음 해에 우리는 10%를 얻고 250+25 =275가 되고 다음 해에 다시 10%가 되므로 275+27.5 =302.5가
R, B 및 점(.)의 세 가지 유형의 문자를 포함하는 문자열이 있다고 가정합니다. 여기서 R은 현재 위치, B는 차단된 위치, 점(.)은 빈 위치를 나타냅니다. 이제 한 단계로 현재 위치에 인접한 위치로 이동할 수 있습니다. ). 가장 왼쪽 위치에 도달할 수 있는지 가장 오른쪽 위치에 도달할 수 있는지 확인해야 합니다. 따라서 입력이 s =.......R.....BBBB.....와 같으면 R이 맨 왼쪽 위치에 도달할 수 있으므로 출력은 True가 됩니다. 차단이 없습니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다. −
현재 위치 (0, 0)(직교 평면)에 앉아 있는 로봇이 있다고 가정합니다. N(북쪽), S(남쪽), W(서쪽), E(동쪽)를 포함하여 만들 수 있는 이동 목록이 있는 경우. 목적지 좌표(x, y)에 도달할 수 있는지 확인해야 합니다. 따라서 입력이 move =[N,N,E,E,S], (x,y) =(2,1)인 경우 출력은 True, 이 문제를 해결하기 위해 다음 단계를 따릅니다. − temp_coord :=[0,0] 동작의 각 동작에 대해 다음을 수행합니다. 이동이 N과 같으면 temp_coord[1] :=temp_coord
nums라고 하는 정렬된 숫자 목록이 있다고 가정하고 주어진 목록에 있는 모든 숫자 쌍 간의 절대 차이의 합을 찾아야 합니다. 여기서 우리는 (i, j)와 (j, i)가 서로 다른 쌍이라고 생각할 것입니다. 답이 매우 크면 결과를 10^9+7로 수정합니다. 따라서 입력이 nums =[2, 4, 8]과 같으면 출력은 |2 - 4|와 같이 24가 됩니다. + |2 - 8| + |4 - 2| + |4 - 8| + |8 - 2| + |8 - 4|. 이 문제를 해결하기 위해 다음 단계를 따릅니다. − m =10^9 + 7 총계
양수 n이 있다고 가정하고 n을 고유한 양수 계승의 합으로 쓸 수 있는지 여부를 확인해야 합니다. 따라서 입력이 n =144와 같으면 출력은 4와 같이 True가 됩니다! + 5! =24 + 120 =144 이 문제를 해결하기 위해 다음 단계를 따릅니다. − 사실 :=1 res :=새 목록 x :=2 사실 <=n, 수행하는 동안 res의 끝에 사실 삽입 사실 :=사실 * x x :=x + 1 res -1 ~ 0 범위 크기의 i에 대해 1 감소, 수행 =res[i]이면 n :