4、动态或贪心

1、买卖股票的最佳时机—*

根据股价手势数组,计算出最大收益,只能交易一次。如[7,1,5,3,6,4],第2天买入,第5天卖出,最大收益5

var maxProfit = function (prices) {
    var arr = [];
    for (let i = 1; i < prices.length; i++) {
        arr.push(prices[i] - prices[i - 1]);
    }
    // 后一个更大,还是相加更大;把最大值放在数组中
    var max = arr[0];
    for (let i = 1; i < arr.length; i++) {
        arr[i] = Math.max(arr[i], arr[i] + arr[i - 1])
        max = Math.max(max, arr[i]);
    }
    return max > 0 ? max: 0;
};
let maxProfit = function(prices) { // 最大值减最小值
    let max = 0;
    let min = Number.MAX_VALUE;
    
    for (let i = 0; i < prices.length; i++) {
        if (prices[i] < min) {
            min = prices[i];    
        } else if (prices[i] - min > max) {
            max = prices[i] - min;    
        }
    }
    return max;
};

2、买卖股票的最佳时机—*

根据股价手势数组,计算出最大收益,可以多次交易,但只能一支股票。如[7,1,5,3,6,4],第2天买入,第3天卖出,第4天买入,第5天卖出,最大收益7

var maxProfit = function (prices) {
  let sum = 0;
  let min = Number.MAX_VALUE;
  let max = 0;
  for(let i = 0; i < prices.length; i++) {
    if (prices[i] < min) {
      min = prices[i];
    } else if (prices[i] - min > max) {
      max = prices[i] - min;    
    }
    if (prices[i] > prices[i + 1]) {
      sum += max;
      min = Number.MAX_VALUE;
      max = 0;
    }
  }
  return sum + max;
};
var maxProfit = function(prices) {
    var max=0;
    for(var i=1;i<prices.length;i++){
        var d=prices[i]-prices[i-1];
        if(d>0){
            max+=d
        }
    }
    return max;
};

4、最大子序列和—*

给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

var maxSubArray = function (nums) {
    let max = nums[0];
    for(let i = 1; i < nums.length; i++) {
        nums[i] = Math.max(nums[i-1] + nums[i], nums[i])
        if(nums[i] > max) max = nums[i];
    }
    return max;
};
var maxSubArray = function(nums) {
  const nLen = nums.length;
  let max = nums[0];
  let lastMax = 0;

  for (let i = 0; i < nLen; i++) {
    lastMax += nums[i];
    if (lastMax > max) {
      max = lastMax;
    }
    if (lastMax < 0) {
      lastMax = 0;
    }
  }
  return max;
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 2014-11-10 12:30:17 考虑到所持的民生银行仓位比例过高, 今天我卖出一小部分民生银行股票。 这是...
    喝杯好茶阅读 5,612评论 0 6
  • 8加急电报那点事儿 冷不丁地,姑娘举决站真收到了一封加急电报,电文很短,区区十三个字,但是每一个字都像一记重锤砸在...
    秭归秀才9条命儿阅读 3,211评论 0 1
  • 今年寒假期间,我和几位同学到深圳宝安沙井镇的一家电子产品公司打短工,这家公司是深圳赛尔康有限公司,属于外商独资企业...
    最后的未来阅读 3,647评论 0 7

友情链接更多精彩内容