題目描述
給定一個非負整數數組,你最初位於數組的第一個位置。
數組中的每個元素代表你在該位置可以跳躍的最大長度。
判斷你是否能夠到達最後一個位置。
示例 1:
輸入: [2,3,1,1,4]
輸出: true
解釋: 我們可以先跳 1 步,從位置 0 到達 位置 1, 然後再從位置 1 跳 3 步到達最後一個位置。
示例 2:
輸入: [3,2,1,0,4]
輸出: false
解釋: 無論怎樣,你總會到達索引爲 3 的位置。但該位置的最大跳躍長度是 0 , 所以你永遠不可能到達最後一個位置。
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/jump-game
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。
白話題目:
算法:
詳細解釋關注 B站 【C語言全代碼】學渣帶你刷Leetcode 不走丟 https://www.bilibili.com/video/BV1C7411y7gB
C語言完全代碼
bool canJump(int* nums, int numsSize){
if (numsSize == 0) return false;
int * maxjump_arr = (int *)malloc(sizeof(int) * numsSize);
int max_jump = 0;
memset(maxjump_arr, 0, sizeof(int) * numsSize);
for (int i = 0; i < numsSize; i++) {
maxjump_arr[i] = i + nums[i];
}
for (int i = 0; i < numsSize; i++) {
if (maxjump_arr[i] > max_jump) {
max_jump = maxjump_arr[i];
}
if(i >= max_jump){
break;
}
}
//printf("%d ", max_tmp);
if (max_jump >= numsSize -1 ) return true;
return false;
}