**已在 leetcode 上驗證通過。
55.跳躍遊戲
給定乙個非負整數陣列,你最初位於陣列的第乙個位置。
陣列中的每個元素代表你在該位置可以跳躍的最大長度。
判斷你是否能夠到達最後乙個位置。
class solution
return true;
}};
45.跳躍遊戲 ii
給定乙個非負整數陣列,你最初位於陣列的第乙個位置。
陣列中的每個元素代表你在該位置可以跳躍的最大長度。
你的目標是使用最少的跳躍次數到達陣列的最後乙個位置。
class solution
return step;
}};
1306.跳躍遊戲 iii
這裡有乙個非負整數陣列 arr,你最開始位於該陣列的起始下標 start 處。
當你位於下標 i 處時,你可以跳到 i + arr[i] 或者 i - arr[i]。
請你判斷自己是否能夠跳到對應元素值為 0 的任一下標處。
class solution
return false;
}};
1345.跳躍遊戲 iv
給你乙個整數陣列 arr ,你一開始在陣列的第乙個元素處(下標為 0)。
每一步,你可以從下標 i 跳到下標:
i + 1 滿足:i + 1 < arr.length
i - 1 滿足:i - 1 >= 0
j 滿足:arr[i] == arr[j] 且 i != j
請你返回到達陣列最後乙個元素的下標處所需的 最少操作次數 。
class solution
for (int i = 0; i < mp[arr[t]].size(); i++)
}mp.erase(arr[t]);
cntpre--;
if (cntpre == 0)
}return -1;
}};
1340.跳躍遊戲 v
給你乙個整數陣列 arr 和乙個整數 d 。每一步你可以從下標 i 跳到:
i + x ,其中 i + x < arr.length 且 0 < x <= d 。
i - x ,其中 i - x >= 0 且 0 < x <= d 。
除此以外,你從下標 i 跳到下標 j 需要滿足:arr[i] > arr[j] 且 arr[i] > arr[k] ,其中下標 k 是所有 i 到 j 之間的數字。
你可以選擇陣列的任意下標開始跳躍。請你返回你 最多 可以訪問多少個下標。
class solution );
sort(t.begin(), t.end());
for (int i = 0; i < n; i++)
for (int j = index+1; j<=index+d && j= arr[index]) break;
dp[index] = max(dp[index], dp[j]+1);
}res = max(res, dp[index]);
}return res;
}};
LintCode 跳躍遊戲 I VS跳躍遊戲 II
陣列中的每個元素代表你在那個位置可以跳躍的最大長度。判斷你是否能到達陣列的最後乙個位置。分析 方法一 基於動態規劃的做法,時間複雜度o n 2 陣列dp i 表示能否到達下標為i的位置,對於從下標i 1開始的每乙個位置,都從下標j 0開始到i 1判斷能否到達j,並且判斷從j開始最遠能否跳到或超過i的...
LintCode Jump Game 跳躍遊戲
給出乙個非負整數陣列,你最初定位在陣列的第乙個位置。陣列中的每個元素代表你在那個位置可以跳躍的最大長度。判斷你是否能到達陣列的最後乙個位置。樣例 a 2,3,1,1,4 返回 true.a 3,2,1,0,4 返回 false.注意 這個問題有兩個方法,乙個是貪心和 動態規劃。貪心方法時間複雜度為o...
跳躍遊戲二
給定乙個非負整數陣列,假定你的初始位置為陣列第乙個下標。陣列中的每個元素代表你在那個位置能夠跳躍的最大長度。你的目標是到達最後乙個下標,並且使用最少的跳躍次數。例如 a 2,3,1,1,4 a 2,3,1,1,4 a 2,3 1,1 4 到達最後乙個下標的最少跳躍次數為 22 2。先跳躍 11 1 ...