[] 62.ユニークなパスLeetCode異なるパス(中)(JAVA)
トピック住所:https://leetcode.com/problems/unique-paths/
件名の説明:
ロボットは、(下図の「スタート」マーク)amxnグリッドの左上隅に位置しています。
ロボットは、任意の時点でダウンまたは右に移動することができます。ロボットは、(下図の「完了」マーク)グリッドの右下隅に到達しようとしています。
どのように多くの可能なユニークなパスがありますか?
上記は、7×3のグリッドです。どのように多くの可能なユニークなパスがありますか?
例1:
Input: m = 3, n = 2
Output: 3
Explanation:
From the top-left corner, there are a total of 3 ways to reach the bottom-right corner:
1. Right -> Right -> Down
2. Right -> Down -> Right
3. Down -> Right -> Right
例2:
Input: m = 7, n = 3
Output: 28
制約:
1 <= m, n <= 100
It's guaranteed that the answer will be less than or equal to 2 * 10 ^ 9.
効果の対象に
左コーナーMXNグリッドに位置ロボットは(以下、「スタート」と表示されたポイントのフィギュアを開始します)。
ロボットは右または下に一歩を移動することができます。(「完了」と表示され、次の図の)グリッドの右下隅に到達しようとしているロボット。
合計でQ.どのように多くの異なるパスがありますか?
問題解決のアプローチ
この問題は、数学のスキルを持つ実際にあります。
Mを移動するための1、m×nのグリッド、左ニーズ- 1つのステップ、右Nを移動する必要が- M +の合計ダウン1つのステップN - 2ステップ
2、長いNを見つけるために行くために右のように- 1、M + Nステップで- 2段階のどのように多くの場合することができます:
class Solution {
public int uniquePaths(int m, int n) {
int min = m > n ? n : m;
long res = 1;
for (int i = 1; i <= min - 1; i++) {
res = res * (m + n - 1 - i) / i;
}
return (int) res;
}
}
実行時:0ミリ秒は、のJavaに提出するすべてのユーザーの100.00パーセントを破った
メモリ消費量:36.2メガバイト、Javaで提出するすべてのユーザの5.01パーセントを打ちます