买卖股票的最佳时机

描述

给定一个数组 prices ,其中 prices[i] 表示股票第 i 天的价格。

在每一天,你可能会决定购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以购买它,然后在 同一天 出售。
返回 你能获得的 最大 利润 。

 

示例 1:

输入: prices = [7,1,5,3,6,4]
输出: 7
解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。
  随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6-3 = 3 。
示例 2:

输入: prices = [1,2,3,4,5]
输出: 4
解释: 在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。
  注意你不能在第 1 天和第 2 天接连购买股票,之后再将它们卖出。因为这样属于同时参与了多笔交易,你必须在再次购买前出售掉之前的股票。
示例 3:

输入: prices = [7,6,4,3,1]
输出: 0
解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。

我的代码

class Solution {
    public int maxProfit(int[] prices) {
   int sum = 0;
        for (int i = 0 ; i < prices.length-1;i++){
            if (prices[i] < prices[i+1]){
                sum+= prices[i+1] - prices[i];
            }else{
                continue;
            }
        }
        return sum;
    }
}

思路

只要明天比今天高,那么久今天买明天卖出!

旋转数组

描述

给你一个数组,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。

 

示例 1:

输入: nums = [1,2,3,4,5,6,7], k = 3
输出: [5,6,7,1,2,3,4]
解释:
向右轮转 1 步: [7,1,2,3,4,5,6]
向右轮转 2 步: [6,7,1,2,3,4,5]
向右轮转 3 步: [5,6,7,1,2,3,4]
示例 2:

输入:nums = [-1,-100,3,99], k = 2
输出:[3,99,-1,-100]
解释:
向右轮转 1 步: [99,-1,-100,3]
向右轮转 2 步: [3,99,-1,-100]

我的代码

我的代码


class Solution {
    public static void rotate(int[] nums, int k) {
        int [] newnums = new int[2*nums.length];
        for (int i = 0;i<nums.length;i++){
            newnums[i] = nums[i];
        }
        for (int i = nums.length;i<2*nums.length;i++){
            newnums[i] = nums[i-nums.length];
        }
        int length = nums.length;
        if (k == 0){return;}
       // if (length % k ==0){return;}
        if (k > length){ k = k % length;}
        for (int i = 0 ;i<nums.length;i++){
            nums[i] = newnums[nums.length-k+i];
        }
    }

}

思路

首尾相连

END

有问题请联系feinan6666@outlook.com

本文作者:
文章标题:2022-2-27 力扣刷题记录
本文地址:https://home.cnboy.top/77.html
版权说明:若无注明,本文皆神码人の世界原创,转载请保留文章出处。
最后修改:2022 年 02 月 27 日 09 : 55 PM
如果觉得我的文章对你有用,请随意赞赏