55. Jump Game
2046 ワード
放せ.昨日は长い间放送していましたが、ビデオに保存されていませんでした.本当に涙しか出ませんでした.
最初は最後の和だけを見て、それからすべてのインデックスの時はもっと大きいものだけを見ます.
間違っています.
こうして頭の中の名前をかすめて….backtrakcing...
コードが悪いと思ったので見てみましたが、これは愚かな時間の限界です~
遡るのは私には難しいですがこれは時間がかかる友人ではないようです…^^
運転時O(2^n)
Runtime: 242 ms, faster than 30.61% of Java online submissions for Jump Game.
Memory Usage: 40.6 MB, less than 90.76% of Java online submissions for Jump Game.
最初は最後の和だけを見て、それからすべてのインデックスの時はもっと大きいものだけを見ます.
class Solution {
public boolean canJump(int[] nums) {
int total = 0;
for (int i = 0; i < nums.length; i++) {
total += nums[i];
if (total < i) {
return false;
}
}
return true;
}
}
残りのコミット...間違っています.
こうして頭の中の名前をかすめて….backtrakcing...
class Solution {
public boolean canJump(int[] nums) {
return helper(nums, 0);
}
public boolean helper(int[] nums, int cur) {
if (cur == nums.length - 1) {
return true;
}
int next = Math.min(cur + nums[cur], nums.length - 1);
for (int i = cur + 1; i <= next; i++) {
if (helper(nums, i)) {
return true;
}
}
return false;
}
}
時間制限が見つかりました...ほほほコードが悪いと思ったので見てみましたが、これは愚かな時間の限界です~
遡るのは私には難しいですがこれは時間がかかる友人ではないようです…^^
運転時O(2^n)
enum Index {
GOOD, BAD, UNKNOWN
}
public class Solution {
public boolean canJump(int[] nums) {
Index[] memo = new Index[nums.length];
for (int i = 0; i < memo.length; i++) {
memo[i] = Index.UNKNOWN;
}
memo[memo.length - 1] = Index.GOOD;
for (int i = nums.length - 2; i >= 0; i--) {
int furthestJump = Math.min(i + nums[i], nums.length - 1);
for (int j = i + 1; j <= furthestJump; j++) {
if (memo[j] == Index.GOOD) {
memo[i] = Index.GOOD;
break;
}
}
}
return memo[0] == Index.GOOD;
}
}
解決策はbottom-upRuntime: 242 ms, faster than 30.61% of Java online submissions for Jump Game.
Memory Usage: 40.6 MB, less than 90.76% of Java online submissions for Jump Game.
Reference
この問題について(55. Jump Game), 我々は、より多くの情報をここで見つけました https://velog.io/@jwade/55.-Jump-Gameテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol