LintCode冏的生意

约翰的生意
在一条数轴上,有n个城市,编号从0 ~ n – 1 , 约翰打算在这n个城市做点生意,他对Armani的一批货物感兴趣,每个城市对于这批货物都有一个价格prices[i]。对于城市x,约翰可从城市编号为[x - k, x + k]购买货物,然后卖到城市x,问约翰在每个城市最多能赚到多少钱?
样例
给出 prices = [1, 3, 2, 1, 5], k = 2,返回 [0, 2, 1, 0, 4]。

TLE暴力版:

// O(2 * n * k * log2k)
const business = function (A, k) {
    var result = [];
    for(var i = 0;i<A.length;i++){
        var start = i - k > 0? i-k:0;
        var minPrice = Math.min.apply(this,A.slice(start,i+k));
        var profit = Math.max((A[i] - minPrice),0);
        result.push(profit);
    }
    return result;
}

改进版,没有AC有WA,但是我没找到算法的问题,先写上来了:

// O(2n +2n * log2k)
const business = function (A, k) {
    var result = [];
    for(let i = 0;i<A.length;i+=k){
        let min = Math.min.apply(null,A.slice((i - k > 0? i-k:0),i+k));
        for(let j = -k;j<k;j++){
            if(j+i<0){
                j = -i;
            }else if(j+i>A.length){
                break;
            }
            if(!result[j+i] || !result[j+i]>=min){
                result[j+i]=min;
            }
        }
    }
    A.forEach((x,i)=>{
        A[i] = x-result[i];
    })
    return A;
}

在k>1的情况下
(1+log2k)<<(k * log2k)

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 曾经看到过一句话,“爱一个人就好像有了软肋,又好像有了盔甲。”在过去的某一瞬间,可能是在光影斑驳的车厢里,也可能是...
    紫藤倚栏风微暖阅读 1,738评论 0 0
  • 九点46起床。今天完全没食欲,因为最近体重突然飙升110…深感震惊。 早餐粗略到果酱面包➕红豆薏米茶。 外加一根没...
    而立少女阅读 1,450评论 0 0
  • 六十八、冤狱 唐湘清著 屈打成招,最易造成冤死,故现行法律严禁用刑逼供。刑事诉讼法第九十八条明文规定:“讯问被告,...
    谦与默阅读 2,885评论 0 0
  • 《西游记》作为中国古代第一部浪漫主义神魔小说,在民间广为流传。从孙悟空大闹天宫开始,唐僧师徒四人取经的故事便牵着大...
    不坠青云兮阅读 5,182评论 0 1
  • 我知道这里的灯会在哪一秒熄灭 哪一家的花蛤更好吃一些 我知道寂静的月下会有孤独的身影 眼里会闪过比星星还明亮的东西...
    长安某生阅读 1,760评论 0 0

友情链接更多精彩内容