給定乙個非負整數陣列,你最初位於陣列的第乙個位置。示例 2:陣列中的每個元素代表你在該位置可以跳躍的最大長度。
判斷你是否能夠到達最後乙個位置。
示例 1:
輸入: [2,3,1,1,4]
輸出: true
解釋: 我們可以先跳 1 步,從位置 0 到達 位置 1, 然後再從位置 1 跳 3 步到達最後乙個位置。
輸入: [3,2,1,0,4]一開始好像沒什麼思路。輸出: false
解釋: 無論怎樣,你總會到達索引為 3 的位置。但該位置的最大跳躍長度是 0 , 所以你永遠不可能到達最後乙個位置。
先來模擬下這個遊戲:
[2, 3, 1, 1, 4]
我們在2,nums[0]處最多可以跳兩個,跳最遠距離(2)來到1, nums[2],接著跳最遠的距離(1)來到1,nums[3],最後到達最後乙個位置4,nums[4]。
再來個例子試試:
[3, 3, 1, 0, 4]
我們按照我們第一次模擬的方法,直接跳到0,nums[4],直接完蛋。
但是,我們第一次可以不跳最遠距離(3) ,只跳一步不就可以到3,nums[1],然後又可以到達最後乙個位置了嗎?
思路不就來了嗎?
我們遍歷每個位置,如果前乙個位置的能跳到的最遠距離大於當前位置,說明我們可以跳到當前位置,我們為了防止出現第二個例子的情況,我們把當前位置能跳到的最遠距離和前乙個位置能跳到的最遠距離比較,如果大,說明我們可以跳到更遠的地方。如果能跳到的最遠距離大於最後乙個位置的距離,返回結果。
class
solution
}return maxdistance >= size -1;
}};
感覺貪心就是人的一種本能,所以做貪心題目時,或許可以聯絡下生活。
這題感覺應該還可以加大難度,求最少步數。
看了下相似題目,果然有個ⅱ。
跳躍遊戲ⅱ
附跳躍遊戲ⅱ**:
class
solution
int maxdistance =0;
// 能跳的最遠距離
int cnt =0;
// 步數
int board =0;
// 能跳的最遠距離的位置
for(
int i =
0; i < size -1;
++i)}}
return cnt;}}
;
青玉案·元夕辛棄疾東風夜放花千樹,更吹落,星如雨。寶馬雕車香滿路。鳳簫聲動,玉壺光轉,一夜魚龍舞。
Leetcode刷題筆記
1.兩數之和給定乙個整數陣列nums 和乙個目標值target,請你在該陣列中找出和為目標值的那兩個整數,並返回他們的陣列下標。ps 你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。思路 用target減去nums中的每乙個數,並設立乙個字典來記錄對應的下標 class...
LeetCode刷題筆記
實現strstr 給定乙個 haystack 字串和乙個 needle 字串,在 haystack 字串中找出 needle 字串出現的第乙個位置 從0開始 如果不存在,則返回 1。示例 1 輸入 haystack hello needle ll 輸出 2 示例 2 輸入 haystack aaaa...
LeetCode刷題筆記
給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 ...