数组两两求差,然后把正数加起来
- class Solution {
- public:
- int maxProfit(vector<int>& prices) {
- int sum=0;
- int diff=0;
- for(int i=0;i
size()-1;i++){ - diff= prices[i+1] - prices[i];
- if(diff>0){
- sum+=diff;
- }
- }
- return sum;
- }
- };

这道题只需要理解一句话,就是确保coverage覆盖的 范围能到达末尾就可以,自己写的差不多但是有些细节写错了所以代码过不了
- class Solution {
- public:
- bool canJump(vector<int>& nums) {
- int coverage = 0;
- if ( nums.size() <= 1) return true;
- //for ( int i = 0; i < nums.size()-1; i++) { 这句这么写不对,举例子【0,2,3】这样第一个数就不行
- for(int i = 0; i <=coverage; i++) {
- // coverage = nums[i] + i; 这句写错了,需要再i遍历的过程中把最大的coverage取出来
- coverage = max (coverage, nums[i] + i);
- if( coverage >= nums.size() - 1) {
- return true;
- }
- }
- return false;
- }
- };