leetCode 121. Best Time to Buy and Sell Stock 数组

简介:

121. Best Time to Buy and Sell Stock

Say you have an array for which the ith element is the price of a given stock on day i.

If you were only permitted to complete at most one transaction (ie, buy one and sell one share of the stock), design an algorithm to find the maximum profit.

Example 1:

Input: [7, 1, 5, 3, 6, 4]
Output: 5

max. difference = 6-1 = 5 (not 7-1 = 6, as selling price needs to be larger than buying price)


Example 2:

Input: [7, 6, 4, 3, 1]
Output: 0

In this case, no transaction is done, i.e. max profit = 0.

题目大意:

在一个数组中,用后面的元素减去前面的元素得到最大值,返回这个最大值。

思路:

可以使用双循环来出来,但是效率太低。没有通过。

采用记录当前之前的最小值,用当前值减去之前最小的值获得一个临时最大值,遍历整个数组,找到最大值。

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class  Solution {
public :
     int  maxProfit(vector< int >& prices) {
         if (prices.size() <= 1)
             return  0;
         int  max = 0;
         int  curMin = prices[0];
         
         for ( int  i = 1;i<prices.size();i++)
         {
             if (prices[i] - curMin > max)
                 max = prices[i] - curMin;
             if (prices[i] < curMin)
                 curMin = prices[i];
         }
         return  max;
     }
};



本文转自313119992 51CTO博客,原文链接:http://blog.51cto.com/qiaopeng688/1837145
相关文章
|
2月前
|
算法
【数组相关面试题】LeetCode试题
【数组相关面试题】LeetCode试题
|
2月前
|
存储
力扣面试经典题之数组/字符串
力扣面试经典题之数组/字符串
26 0
|
2月前
|
人工智能 BI
力扣561 数组拆分
力扣561 数组拆分
|
1月前
【Leetcode】两数之和,给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
【Leetcode】两数之和,给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
|
4天前
|
算法
leetcode代码记录(寻找两个正序数组的中位数
leetcode代码记录(寻找两个正序数组的中位数
10 2
|
4天前
|
索引
leetcode代码记录(最长重复子数组
leetcode代码记录(最长重复子数组
8 0
|
4天前
leetcode代码记录(两个数组的交集
leetcode代码记录(两个数组的交集
8 1
|
4天前
leetcode代码记录(最大子数组和
leetcode代码记录(最大子数组和
9 2
|
7天前
|
存储 算法
Leetcode 30天高效刷数据结构和算法 Day1 两数之和 —— 无序数组
给定一个无序整数数组和目标值,找出数组中和为目标值的两个数的下标。要求不重复且可按任意顺序返回。示例:输入nums = [2,7,11,15], target = 9,输出[0,1]。暴力解法时间复杂度O(n²),优化解法利用哈希表实现,时间复杂度O(n)。
19 0
|
13天前
|
索引
Leetcode 给定一个数组,给定一个数字。返回数组中可以相加得到指定数字的两个索引
Leetcode 给定一个数组,给定一个数字。返回数组中可以相加得到指定数字的两个索引