leetcode 63. Unique Paths II - 고유 경로 | 동적 계획
1742 단어 LeetCode
[사고방식]
leetcode 62.Unique Paths-고유 경로 | 동적 계획 차이점
여기에 로봇에게 장애물을 증가시켰습니다. 점차적인res[i][j]=res[i-1][j]+res[i][j-1] 이전에 판단을 추가해야 합니다. 만약에res[i][j]=0,res[i][j]=0:
public int uniquePathsWithObstacles(int[][] obstacleGrid) {
int[][] pathCount = new int[obstacleGrid.length][obstacleGrid[0].length];
for (int i = 0; i < obstacleGrid.length && obstacleGrid[i][0] != 1; i++)
pathCount[i][0] = 1;
for (int j = 0; j < obstacleGrid[0].length && obstacleGrid[0][j] != 1; j++)
pathCount[0][j] = 1;
for (int i = 1; i < obstacleGrid.length; i++)
for (int j = 1; j < obstacleGrid[0].length; j++)
if (obstacleGrid[i][j] == 1) pathCount[i][j] = 0;
else pathCount[i][j] = pathCount[i - 1][j] + pathCount[i][j - 1];
return pathCount[obstacleGrid.length - 1][obstacleGrid[0].length - 1];
}
43/43
test cases passed. Runtime: 1 ms Your runtime beats 17.74% of javasubmissions.
【최적화】
여기서도 마찬가지로 2차원 그룹을 1차원 그룹으로 최적화할 수 있다.pathCount[i]는 행렬m을 저장합니다.× n 행렬, m행 i열의 주법 수:
public int uniquePathsWithObstacles(int[][] obstacleGrid) {
int[] pathCount = new int[obstacleGrid[0].length];
pathCount[0] = 1;
for (int i = 0; i < obstacleGrid.length; i++)
for (int j = 0; j < obstacleGrid[0].length; j++)
if (obstacleGrid[i][j] == 1) pathCount[j] = 0;
else if (j > 0) pathCount[j] += pathCount[j - 1];
return pathCount[obstacleGrid[0].length - 1];
}
43/43 test cases passed. Runtime: 1 ms Your runtime beats 17.74% of javasubmissions.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.