200107题(vivo)

在这里插入图片描述
注意:leetcode题中明确说了一定能到达最后一个位置,但vivo没有这个说明,所以要进行判定。
20vivo原题
在这里插入图片描述
思路:贪心算法(顺藤摸瓜)
在这里插入图片描述
在这里插入图片描述

class Solution {
public:
	int jump(vector<int>& nums) {
		if (nums.size() <= 1) return 0;
		int step = 0, start = 0, reach = 0;
		while (reach < nums.size() - 1) {
			int farest = 0;
			for (int i = start; i <= reach; ++i)
			{
				if (farest < i + nums[i])
				{
					farest = i + nums[i];
					start = i + 1;
				}
			}
			reach = farest;
			step++;
		}
		return step;
	}
};

vivo的题的代码:

int solution(int a[], int N)
{
	if (N < 1)
		return -1;
	if (N == 1)
		return 0;
	int start = 0;
	int reach = 0;
	int step = 0;
	while (reach < N - 1) {
		++step;
		int farest = 0;
		for (int i = start; i <= reach; ++i) {
			if (i + a[i] > farest) {
				farest = i + a[i];
				start = i + 1;
			}
		}
		if (farest == reach) return -1;
		reach = farest;
	}
	return step;
}
发布了146 篇原创文章 · 获赞 3 · 访问量 4992

猜你喜欢

转载自blog.csdn.net/ShenHang_/article/details/103652813