給出乙個非負整數陣列,你最初定位在陣列的第乙個位置。
陣列中的每個元素代表你在那個位置可以跳躍的最大長度。
判斷你是否能到達陣列的最後乙個位置。
a =[2,3,1,1,4],返回 true.
a =[3,2,1,0,4],返回 false.
這個問題有兩個方法,乙個是貪心
和動態規劃
。
貪心
方法時間複雜度為o(n)
。
動態規劃
方法的時間複雜度為為o(n^2)
。
我們手動設定小型資料集,使大家可以通過測試的兩種方式。這僅僅是為了讓大家學會如何使用動態規劃的方式解決此問題。如果您用動態規劃的方式完成它,你可以嘗試貪心法,以使其再次通過一次。
動態規劃。
確定狀態:
最後一步:如果能跳到最後一塊石頭n-1, 我們考慮它跳的最後一步。這一步是從石頭j跳過來的,j並且最後一步不超過跳躍的最大距離:n-j<=a[j]
子問題:設dp[i]表示能不能跳到石頭i,則狀態方程:
dp[i] = or(0<=j
意思就是,只要試探到有乙個j的位置能跳到i,則返回true。
初始條件:
dp[0] = true
時間複雜度為o(n^2)
public class solution
return true;
}}
兩次過 Lintcode 56 兩數之和
給乙個整數陣列,找到兩個數使得他們的和等於乙個給定的數 target。你需要實現的函式twosum需要返回這兩個數的下標,並且第乙個下標小於第二個下標。注意這裡下標的範圍是 0 到 n 1。example1 給出 numbers 2,7,11,15 target 9,返回 0,1 example2 ...
兩次過 Lintcode 1209 構造矩形
對於乙個web開發者,如何設計頁面大小很重要。所以,給定乙個矩形大小,設計其長 l 寬 w 使其滿足如下要求 1.矩形區域大小需要和給定目標相等。2.寬度w不大於長度l,也即l w.3.長和寬的差異盡可能的小。返回設計好的長度l和寬度w。樣例 輸入 4 輸出 2,2 解釋 目標區域是4,所有可能的構...
兩次過 Lintcode 212 空格替換
設計一種方法,將乙個字串中的所有空格替換成 20。你可以假設該字串有足夠的空間來加入新的字元,且你得到的是 真實的 字元長度。你的程式還需要返回被替換後的字串的長度。對於字串 mr john smith 長度為13 替換空格之後,引數中的字串需要變為 mr 20john 20smith 並且把新長度...