携程2016开发工程师编程题第一题:股票交易日问题,只能一次买进卖出,本是一个很简单的问题,我却用了排序,用最大的减去最小的,好吧,居然通过了65%的测试用例,天真的以为自己终于做对一道线上编程题了,作为一个菜鸟的开始,这就当做我的第一篇博客吧。

-----------------------------------------------------------------------------------------------------------

第一题:求出一天股票买出和买入的最大利润,只有一次买入和卖出的机会

输入的数据为:2,3,2,4     中间用,隔开

输出为:2

解答:用Java编写,读取字符串,根据逗号拆分成字符串数组,再转化成整形数组,下面试具体代码

import java.util.*;
public class StockProfit {
/**
* 计算一天   一次买进和卖出后的最大利润
* a[]表示一天股票价格的浮动
* length价格数组的长度
*/
public static int Profit(int a[],int length)
{
int maxValue = 0;
//用后面的值减去前面的值表示浮动的差值,因为要先买才能卖
for(int i = length-1; i >=0 ; i--)
{
for(int j = i; j >=0;j--){
if(a[i] > a[j])  {
if((a[i] -a[j]) > maxValue){
maxValue = a[i] -a[j];
}
}
}
}
return maxValue;
}
public static void main(String[] args) {
Scanner sin =new Scanner(System.in);
String numstring = sin.nextLine();
String [] datastr = numstring.split(",");
int [] data = new int[datastr.length];
for(int i =0; i

相类似的问题有多种,在网上一搜也有两次买进卖出的,果断学习了一下;

题目:在股市的交易日中,假设最多可进行两次买卖(即买和卖的次数均小于等于2),规则是必须一笔成交后进行另一笔(即买-卖-买-卖的顺序进行)。给出一天中的股票变化序列,请写一个程序计算一天可以获得的最大收益。请采用实践复杂度低的方法实现。

给定价格序列prices及它的长度n,请返回最大收益。保证长度小于等于500。

测试样例:10,22,5,75,65,80

输出:87

解答:用Java编写,只是在求两次是时候把股票的浮动分为2个部分分为求出最大收益,然后求出两次收益之和

import java.util.*;
/**
* 股票的2次买入卖出买-卖-买-卖这样进行
* trade函数表示在一个阶段一次买入卖出的最大利润
* Profit2函数表示分为两次股票购买的最大利润
*/
public class StockProfit2 {
public static int trade(int val[],int left,int right){
int min = val[left],max = 0;
if(left == right) {return 0;}
for(int j = left; j <= right;j++){
if(val[j] < min) min = val[j];
if((val[j] - min)>max) max = val[j] -min;
}
return max;
}
public static int Profit2(int a[],int length){
int value,maxValue = 0;
for(int i = 0; i < length;i++)
{
value = trade(a,0,i-1) + trade(a,i, a.length-1);//把股票的波动分为两个阶段,分别求最大值
if(value > maxValue) maxValue = value;
}
return maxValue;
}
public static void main(String[] args) {
Scanner sin =new Scanner(System.in);
String numstring = sin.nextLine();
String [] datastr = numstring.split(",");
int [] data = new int[datastr.length];
for(int i =0; i


两次收益的计算方法不同,一个容易理解,一个性能高点

(动态规划)股票交易日问题相关推荐

  1. 股票交易日(动态规划)----美团2016研发工程师编程题(二)

    [编程题] 股票交易日 在股市的交易日中,假设最多可进行两次买卖(即买和卖的次数均小于等于2),规则是必须一笔成交后进行另一笔(即买-卖-买-卖的顺序进行).给出一天中的股票变化序列,请写一个程序计算 ...

  2. 股票交易日(动态规划)

    [编程题] 股票交易日 在股市的交易日中,假设最多可进行两次买卖(即买和卖的次数均小于等于2),规则是必须一笔成交后进行另一笔(即买-卖-买-卖的顺序进行).给出一天中的股票变化序列,请写一个程序计算 ...

  3. python 判断当前日期是否为股票交易日

    """ 需要先安装pip install chinesecalendar """ from chinese_calendar import ...

  4. 名企笔试:美团2016招聘笔试(股票交易日)

    美团2016招聘笔试(股票交易日) 题目描述 在股市的交易日中,假设最多可进行两次买卖(即买和卖的次数均小于等于2),规则是必须一笔成交后进行另一笔(即买-卖-买-卖的顺序进行).给出一天中的股票变化 ...

  5. 动态规划--股票(一次买入卖出和两次买入卖出)

    动态规划–股票(一次买入卖出和两次买入卖出)(c++) ##一次买入卖出 如果用一个数组代表股票每天的价格,可以选择从某一天买入,然后之后的一天卖出,求能够获得的最大收益. 例如,一只股票在某些时间节 ...

  6. 【动态规划】股票交易日

    题目描述: 在股市的交易日中,假设最多可进行两次买卖(即买和卖的次数均小于等于2),规则是必须一笔成交后进行另一笔(即买-卖-买-卖的顺序进行).给出一天中的股票变化序列,请写一个程序计算一天可以获得 ...

  7. 美团笔试题:股票交易日

    在股市的交易日中,假设最多可进行两次买卖(即买和卖的次数均小于等于2),规则是必须一笔成交后进行另一笔(即买-卖-买-卖的顺序进行).给出一天中的股票变化序列,请写一个程序计算一天可以获得的最大收益. ...

  8. 动态规划——股票问题

    动态规划专题--股票问题 虽然前两题用贪心可以做,但是本篇文章全部使用动态规划来解决问题,比较具有体系. 121. 买卖股票的最佳时机 动规五部曲:  第一步:确定dp数组(dp table)以及下标 ...

  9. LeetCode动态规划股票系列整理

    写在前面 股票感觉是LeetCode动态规划中系列最多的一类,交易次数不同,有冷冻期,含手续费,让买卖的最佳时机千奇百怪,但是只要掌握dp的方法,解决起来还是有套路可循的.依据dp的常规思想,股票问题 ...

最新文章

  1. [JS] 闭包与内存泄漏
  2. httpd-2.2和httpd-2.4安装部署
  3. Select 多个表并且相关联转置
  4. hbuilder egit插件的安装使用--项目文件丢失的教训
  5. OpenGL上下文共享示例
  6. 对于Eclipse的正确用法
  7. ubuntu 新增mysql用户_Ubuntu中给mysql添加新用户并分配权限
  8. leetcode(977)有序数组的平方
  9. CreateThread用法详解
  10. Dart的套接字与web套接字
  11. Java 设计模式 之 单例模式(Singleton)
  12. Eigen教程(5)
  13. SpringBoot 查询今年所有节假日
  14. 开发一款APP需要多少钱?
  15. 国内外最顶级的12大看板工具
  16. 测试人员想做游戏测试,你一定要知道这几点!
  17. 关于android 手机硬件加速问题
  18. 云+未来峰会安全专场总结:智慧安全护航企业数字化转型
  19. CHIPON 芯旺微的KF32A156系列的CAN FD模块的使用介绍
  20. 使用VPB生成OSG的.ive格式地形方法

热门文章

  1. 在猎豹浏览器中使用360邮件通
  2. c语言expand函数,编纂expand(s1,s2)
  3. Shell 中的真与假
  4. 如何面对困难的经典语录
  5. 用java做日记本系统_jsp+servlet开发java web个人日记本系统
  6. 【一起学Rust | 开源项目】效率提升工具espanso——在日常输入中使用代码提示
  7. 许多大学仍不愿接受加密货币捐赠
  8. 一周刷爆LeetCode,算法da神左神(左程云)耗时100天打造算法与数据结构基础到高级全家桶教程,直击BTAJ等一线大厂必问算法面试题真题详解 笔记
  9. 【论文阅读】inception v1学习总结
  10. NVIDIA AGX xavier 系列一 刷机步骤经验总结