算法-跳躍遊戲II

算法-跳躍遊戲II

跳躍遊戲II

跳躍遊戲II也是Leetcode上一道經典的題目,難度爲hard,其實可以暴力求解,思路是使用兩個指針,第一個指針指向初始位置,第二個指針指向i+nums[i]位置,在兩個指針間的窗口中,選擇一個nums[k]+k最大的值作爲要跳躍的位置。時間複雜度是O(N),很符合我們的直觀。

不過我們採用另一種O(N)的算法來解決這個問題

public int jump(int[] nums) {
	int maxPos=0;
	int bound=0;
	int miniStep=0;
	for(int i=0;i<nums.length;i++){
		//這裏完成的就是暴力求解中的尋找跳躍點的操作了
		//不過我們不需要直接跳,我們只負責記錄步數就行了
		maxPos=Math.max(maxPos,nums[i]+i);
		if(i==bound){
			bound=maxPos;
			miniStep++;
		}
	}
	return miniStep;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章