Leecode45_jump

题目:
给定数组,数组值为可以向前进得最大次数,求跳到最后一个位置的最少步数。建设数组不含0.

思路:
由于存的值是当前可跳的最远的步数,那么肯定尽量跳得远咯。从头开始,维护一个上次可以跳得最远位置,和当前的可跳的最远的位置,取大的。

代码:

int Leecode45_jump(std::vector<int>& nums) {
     
	int maxPos = 0, end = 0, step = 0;
	for (int i = 0; i < nums.size() - 1; ++i) {
     
		if (maxPos >= i) {
     
			maxPos = std::max(maxPos, i + nums[i]);
			if (i == end) {
     
				end = maxPos;
				++step;
			}
		}
	}
	return step;
}

你可能感兴趣的:(Leecode)