Leetcode 매일 한 문제--사고방식 소기
6403 단어 LeetCode
기사 목록
Leet Code 매일 한 문제, golang.
T15 2020.6.12 세 개의 합, 쌍바늘의 활용
중복 문제 없음 -> 정렬, 같은 값이 정렬 배열에서 건너뛰기 - Fix A,find B+C = A의 방식: 이중 포인터.x1T70 2020.6.13 피보나치 수열
계단 오르기, 고전적인 동적 기획, 피보나치 수열, 세 가지 변수로 공간을 절약할 수 있습니다.
T1014 2020.6.17 최적 관광: 쌍지침, 계산 공식 전환, 국부 최대치의 구해 최적화
베스트 관광조합.사고방식은 먼저 O(n^2)의 폭력 검색을 하고 소박한 관찰을 결합시켜 최적화 방법을 얻는 것이다.
계산value의 공식은 A[i] + A[j] + i - j : ( i < j )
이기 때문에 i
, j
을 한데 묶으면 직감적으로 사고에 유리하다.공식화 (A[i] + i) + (A[j] - j) : ( i < j )
예시된 수조[8,1,5,2,6]
를 이 계산 방식에 따라 두 개의 수조로 전개하다.(A[i]+i) 8 2 7 5 10 (A[j]-j) 8 0 3 -1 2
위에서 하나의 수를 찾고, 그것의 오른쪽 아래에서 가장 큰 수를 더하면 결과이다.예를 들어 8+0 8+3 8-1 8+2는 모두 가능합니다. 그러면 어떻게 최대 해를 찾습니까?
우리는 j 인덱스를 계속 추진한다. 예를 들어 3이라는 위치로 추진하면 j=3시에 최대치는 8, 2에서 최대치를 선택하고 j=3의 값을 추가한다.j(아래 그룹)를 훑어보고 i(위 그룹)의 최대 값을 업데이트하는 아이디어를 얻을 수 있습니다.각 j에 대응하는 최대치를 얻을 수 있다.
T1028 2020.6.18 2차원 트리 복원, 반복 관계와 좌중우측 관계
두 갈래 나무를 차례대로 복원하다.동시에 노드가 하나의 하위 노드만 있다면 이 하위 노드가 왼쪽 하위 노드임을 보증합니다.선순환의 특징: 뿌리 좌우.그러면 한 개의 수조 A1 A2 A3 A4를 훑어보거나... 하나씩 훑어보거나 앞의 왼쪽 노드(상술한 굵은 제한으로 왼쪽이 비어 있을 수 없음), 아니면 이전에 훑어보던 어느 오른쪽 노드를 훑어보거나.
제목을 받았는데 어리둥절하면서도 나무 구조에 익숙하지 않다.
이 문제의 핵심 사고방식은 창고를 유지하고 창고 꼭대기 요소에 하위 노드를 찾는 것이다.
T125 2020.6.19 뒤섞인 문자열
회문열을 검증하다.비교적 간단하다. 상관없는 문자를 만나면 건너뛰면 된다. 두 바늘 만남법.
T10 2020.6.20 정규 일치, *.자모
정규 일치.어렵다dp 방법, s[i][j]는pattern[1,j]와string[1,i]가 일치하는지 여부를 나타낸다.점차적으로 밀어붙이는 방식은 비교적 복잡하다. 첫 번째 층은 *와 비를 구분하는 것이다.2층에서 x의 추이식을 찾았다. // f[i][j]
// p[j] != "*" : if p[j] == s[i] { f[i][j] = f[i-1][j-1] } else { f[i][j] = false }
// p[j] == "*" : if p[j-1] == s[i] { f[i][j] = f[i-1][j] or f[i][j-2] } else { f[i][j] = f[i][j-2] }
T124 2020.6.21 트리의 최대 경로 및
주요 사고방식: 나무의 귀속.하나의 노드에 대해 말하자면 최대 경로가 존재하는 곳: 왼쪽 + 중 + 오른쪽, 또는 루트 + 오른쪽의 최대 값, 또는 루트 + 왼쪽의 최대 값.위의 노드에 대한 공헌은 좌+중 또는 우+중에 해당한다.주의해야 할 것은 노드 값이 0보다 작고 어떤 루트 노드의 왼쪽이 가장 크므로 0과 비교해야 한다는 것이다.
나무의 귀속, 통용적인 사고방식: 이 층이 (좌우 노드에 의존해서) 무엇을 얻을 수 있는지, 이 층이 필요로 하는지(상층에 어떤 결과를 제공할 수 있는지).
T63 2020.7.6 다른 경로
한정은 오른쪽과 아래로만 갈 수 있기 때문에 dp는 쉽게 쓸 수 있다.dp[i][j] = dp[i-1][j]+dp[i][j-1].별 어려움이 없다.
T112 2020.7.7 경로 및 지정된 값 찾기
두 갈래 나무의 귀속은 매번sum로 node를 뺀다.Val은 자목의 입삼이다.
T2020.7.8면 문제16.11 다이빙판
모두 k
개를 사용하기 때문에 i를 두루 훑어보고 i
개longer
개k-i
개shorter
를 찾으려고 생각하기 쉽다.또 중복이 없고 점차적으로 증가하는 것을 요구하는데 번거로움은 무게를 줄이는 데 있다. 그러나 몇 수를 계산해 보면 중복이 없을 것이다. 만약shorter < longer
이 주어진k
, j > i
, (k-j)*shorter+longer*j - [(k-i)*shorter+longer*i] = (j-i)*(longer-shorter)
그리고longer > shorter
가 반드시 0보다 크기 때문에 점차적으로 증가하고 같지 않기 때문이다.그래서 무겁게 할 필요가 없고 반드시 단조롭게 증가할 것이다.또한 j > i
의 경우 위의 차분식이 0과 같다는 것을 알 수 있다. 이것은 모든 값이 같고 한 수만 되돌려주면 된다는 것이다.func divingBoard(shorter int, longer int, k int) []int {
if k == 0{
return nil
}
if shorter == longer{
return []int{shorter*k}
}
m := make([]int, k+1)
for i:=0;i<=k;i++{
m[i] = (k-i)*shorter + longer*i
}
return m
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
python 문자열 입력으로 모든 유효한 IP 주소 생성(LeetCode 93번 문제)
이 문제의 공식 난이도는 Medium으로 좋아요 1296, 반대 505, 통과율 35.4%를 눌렀다.각 항목의 지표로 말하자면 보기에는 약간 규범에 맞는 것 같지만, 실제로도 확실히 그렇다.이 문제의 해법과 의도는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
T70 2020.6.13 피보나치 수열
계단 오르기, 고전적인 동적 기획, 피보나치 수열, 세 가지 변수로 공간을 절약할 수 있습니다.
T1014 2020.6.17 최적 관광: 쌍지침, 계산 공식 전환, 국부 최대치의 구해 최적화
베스트 관광조합.사고방식은 먼저 O(n^2)의 폭력 검색을 하고 소박한 관찰을 결합시켜 최적화 방법을 얻는 것이다.
계산value의 공식은
A[i] + A[j] + i - j : ( i < j )
이기 때문에 i
, j
을 한데 묶으면 직감적으로 사고에 유리하다.공식화 (A[i] + i) + (A[j] - j) : ( i < j )
예시된 수조[8,1,5,2,6]
를 이 계산 방식에 따라 두 개의 수조로 전개하다.(A[i]+i) 8 2 7 5 10 (A[j]-j) 8 0 3 -1 2 위에서 하나의 수를 찾고, 그것의 오른쪽 아래에서 가장 큰 수를 더하면 결과이다.예를 들어 8+0 8+3 8-1 8+2는 모두 가능합니다. 그러면 어떻게 최대 해를 찾습니까?
우리는 j 인덱스를 계속 추진한다. 예를 들어 3이라는 위치로 추진하면 j=3시에 최대치는 8, 2에서 최대치를 선택하고 j=3의 값을 추가한다.j(아래 그룹)를 훑어보고 i(위 그룹)의 최대 값을 업데이트하는 아이디어를 얻을 수 있습니다.각 j에 대응하는 최대치를 얻을 수 있다.
T1028 2020.6.18 2차원 트리 복원, 반복 관계와 좌중우측 관계
두 갈래 나무를 차례대로 복원하다.동시에 노드가 하나의 하위 노드만 있다면 이 하위 노드가 왼쪽 하위 노드임을 보증합니다.선순환의 특징: 뿌리 좌우.그러면 한 개의 수조 A1 A2 A3 A4를 훑어보거나... 하나씩 훑어보거나 앞의 왼쪽 노드(상술한 굵은 제한으로 왼쪽이 비어 있을 수 없음), 아니면 이전에 훑어보던 어느 오른쪽 노드를 훑어보거나.
제목을 받았는데 어리둥절하면서도 나무 구조에 익숙하지 않다.
이 문제의 핵심 사고방식은 창고를 유지하고 창고 꼭대기 요소에 하위 노드를 찾는 것이다.
T125 2020.6.19 뒤섞인 문자열
회문열을 검증하다.비교적 간단하다. 상관없는 문자를 만나면 건너뛰면 된다. 두 바늘 만남법.
T10 2020.6.20 정규 일치, *.자모
정규 일치.어렵다dp 방법, s[i][j]는pattern[1,j]와string[1,i]가 일치하는지 여부를 나타낸다.점차적으로 밀어붙이는 방식은 비교적 복잡하다. 첫 번째 층은 *와 비를 구분하는 것이다.2층에서 x의 추이식을 찾았다.
// f[i][j]
// p[j] != "*" : if p[j] == s[i] { f[i][j] = f[i-1][j-1] } else { f[i][j] = false }
// p[j] == "*" : if p[j-1] == s[i] { f[i][j] = f[i-1][j] or f[i][j-2] } else { f[i][j] = f[i][j-2] }
T124 2020.6.21 트리의 최대 경로 및
주요 사고방식: 나무의 귀속.하나의 노드에 대해 말하자면 최대 경로가 존재하는 곳: 왼쪽 + 중 + 오른쪽, 또는 루트 + 오른쪽의 최대 값, 또는 루트 + 왼쪽의 최대 값.위의 노드에 대한 공헌은 좌+중 또는 우+중에 해당한다.주의해야 할 것은 노드 값이 0보다 작고 어떤 루트 노드의 왼쪽이 가장 크므로 0과 비교해야 한다는 것이다.
나무의 귀속, 통용적인 사고방식: 이 층이 (좌우 노드에 의존해서) 무엇을 얻을 수 있는지, 이 층이 필요로 하는지(상층에 어떤 결과를 제공할 수 있는지).
T63 2020.7.6 다른 경로
한정은 오른쪽과 아래로만 갈 수 있기 때문에 dp는 쉽게 쓸 수 있다.dp[i][j] = dp[i-1][j]+dp[i][j-1].별 어려움이 없다.
T112 2020.7.7 경로 및 지정된 값 찾기
두 갈래 나무의 귀속은 매번sum로 node를 뺀다.Val은 자목의 입삼이다.
T2020.7.8면 문제16.11 다이빙판
모두
k
개를 사용하기 때문에 i를 두루 훑어보고 i
개longer
개k-i
개shorter
를 찾으려고 생각하기 쉽다.또 중복이 없고 점차적으로 증가하는 것을 요구하는데 번거로움은 무게를 줄이는 데 있다. 그러나 몇 수를 계산해 보면 중복이 없을 것이다. 만약shorter < longer
이 주어진k
, j > i
, (k-j)*shorter+longer*j - [(k-i)*shorter+longer*i] = (j-i)*(longer-shorter)
그리고longer > shorter
가 반드시 0보다 크기 때문에 점차적으로 증가하고 같지 않기 때문이다.그래서 무겁게 할 필요가 없고 반드시 단조롭게 증가할 것이다.또한 j > i
의 경우 위의 차분식이 0과 같다는 것을 알 수 있다. 이것은 모든 값이 같고 한 수만 되돌려주면 된다는 것이다.func divingBoard(shorter int, longer int, k int) []int {
if k == 0{
return nil
}
if shorter == longer{
return []int{shorter*k}
}
m := make([]int, k+1)
for i:=0;i<=k;i++{
m[i] = (k-i)*shorter + longer*i
}
return m
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
python 문자열 입력으로 모든 유효한 IP 주소 생성(LeetCode 93번 문제)이 문제의 공식 난이도는 Medium으로 좋아요 1296, 반대 505, 통과율 35.4%를 눌렀다.각 항목의 지표로 말하자면 보기에는 약간 규범에 맞는 것 같지만, 실제로도 확실히 그렇다.이 문제의 해법과 의도는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.