1. 陶陶摘苹果
题目描述:
陶陶家的院子里有一棵苹果树,每到秋天树上就会结出 10 个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个 30 厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。 现在已知 10 个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果,苹果就会掉下来。
输入描述:
输入包括两行数据。第一行包含 10 个 100 到 200 之间(包括 100 和 200 )的整数(以厘米为单位)分别表示 10 个苹果到地面的高度,两个相邻的整数之间用一个空格隔开。第二行只包括一个 100 到 120 之间(包含 100 和 120 )的整数(以厘米为单位),表示陶陶把手伸直的时候能够达到的最大高度。
输出描述:
输出包括一行,这一行只包含一个整数,表示陶陶能够摘到的苹果的数目。
代码示例:
#include <iostream>
using namespace std;
int main() {
int apple_h[10];
int max_t;
int apple = 0;
cout << "请输入每个苹果到地面的高度(共10个,范围为100到200):" << endl;
for (int i = 0; i < 10; i++) {
cin >> apple_h[i];
}
cout << "请输入陶陶把手伸直的最大高度(范围为100到120):";
cin >> max_t;
for (int i = 0; i < 10; i++) {
if (apple_h[i] <= max_t + 30) {
apple++;
}
}
cout << "陶陶能够摘到的苹果数量为:" << apple << endl;
system("pause");
return 0;
}
运行结果:
2. 跳跃游戏
给你一个非负整数数组
nums
,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回
true
;否则,返回false
。示例 1:
输入:nums = [2,3,1,1,4] 输出:true 解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。示例 2:
输入:nums = [3,2,1,0,4] 输出:false 解释:无论怎样,总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 , 所以永远不可能到达最后一个下标。提示:
1 <= nums.length <= 104
0 <= nums[i] <= 105
代码示例:
class Solution {
public:
bool canJump(vector<int>& nums) {
int k = 0;
for (int i = 0; i < nums.size(); i++) {
if (i > k) return false;
k = max(k, i + nums[i]);
}
return true;
}
};