[经典面试题][去哪网]合并日期

题目

思路
声明一个大小为1001的数组array[1001],全部初始化为0
然后从前向后遍历数组,先处理[0,100,300]再处理[40,50,350]。后面的价格覆盖前面的价格。

代码

    /*-------------------------------------
    *   日期:2015-04-10
    *   作者:SJF0115
    *   题目: 合并日期
    *   来源:去哪网
    *   博客:
    ------------------------------------*/
    #include <iostream>
    #include <vector>
    using namespace std;

    struct Interval{
        int start;
        int end;
        int price;
        Interval(int s = 0,int e = 0,int p = 0):start(s),end(e),price(p){}
    };

    vector<Interval> Merge(Interval dateRnagePrice[],int size){
        Interval interval[1001];
        // 最小日期 最大日期
        int min = 1001,max = 0,start,end,price;
        for(int i = 0;i < size;++i){
            start = dateRnagePrice[i].start;
            end = dateRnagePrice[i].end;
            price = dateRnagePrice[i].price;

            if(start < min){
                min = start;
            }//if
            if(end > max){
                max = end;
            }//if
            for(int j = start;j <= end;++j){
                interval[j].price = price;
            }//for
        }//for
        // 合并
        vector<Interval> result;
        Interval date;
        date.start = min;
        for(int i = min+1;i <= max;++i){
            if(interval[i].price != interval[i-1].price){
                date.end = i-1;
                date.price = interval[i-1].price;
                result.push_back(date);
                date.start = i;
            }//if
        }//while
        date.end = max;
        date.price = interval[max].price;
        result.push_back(date);
        return result;
    }

    int main(){
        //Interval dateRnagePrice[] = {Interval(0,100,300),Interval(40,50,350)};
        Interval dateRnagePrice[] = {Interval(2,19,300),Interval(10,40,250),Interval(41,60,250)};
        vector<Interval> result = Merge(dateRnagePrice,3);
        for(int i = 0;i < result.size();++i){
            cout<<"["<<result[i].start<<","<<result[i].end<<","<<result[i].price<<"]"<<endl;
        }//for
        return 0;
    }
时间: 2024-12-20 12:24:44

[经典面试题][去哪网]合并日期的相关文章

去哪儿网将成为国内首家上市的垂直搜索引擎网站

在线旅游搜索引擎去哪儿网赴美上市日期将很快确定,一旦上市通过,去哪儿网将成为国内首家上市的垂直搜索引擎网站.但近期一份低价机票调查报告的出炉则可能波及其上市. BiaNews发现,最近一份第三方低价机票调查报告显示,来自去哪儿网的低价机票九成属违规销售,此项不利报告则很可能影响去哪儿上市进程.6月20日,国内首份<中国在线机票价格监测分析报告>出炉,报告显示是由国内知名旅游咨询公司劲旅咨询与专业跨国咨询公司格兰斯路(Grass Roots),对国内在线机票预订市场进行深入调研,撰写并发布了国内

[历年IT笔试题]2015年去哪网实习笔试题

(1)跟LeetCode中的:[LeetCode]33.Search in Rotated Sorted Array一样. /*----------------------------------------------------------- * 日期:2014-01-15 * 作者:SJF0115 * 题目: 33.Search in Rotated Sorted Array * 来源:http://oj.leetcode.com/problems/search-in-rotated-so

相对路径 绝对路径-有一道去哪网校园招聘的笔试题大家帮忙看一下,是关于相对路径转绝对路径的

问题描述 有一道去哪网校园招聘的笔试题大家帮忙看一下,是关于相对路径转绝对路径的 1.写一个函数,转换相对路径为绝对路径,比如:/home/abs/../temp/new/../,输出路径为:/home/temp

去哪儿网面试题:对100亿行数据排序

问题描述 去哪儿网面试题:对100亿行数据排序 一个文本文件里面有100亿行无序的数据,将这些数据从小到大排列并输出前100个数据. http://www.manong1024.com/q/205 解决方案 这是典型的bitmap排序.也就是创建一个4294967296元素的数组,然后遍历这100亿数据,如果某个数据等于12,就让数组下标为12的那个元素+1,以此类推. 最后从数组0开始输出,如果这个元素对应的值是1,就输出1次,如果是2就输出2次,直到100为止. 解决方案二: 如果用bitm

去哪儿 网和 携程 之间合并的传闻不断发酵

4月15日午间消息,近日去哪儿网和携程之间合并的传闻不断发酵,两家如何合并的猜测也持续进行.去哪儿网CEO庄辰超今日在发出的内部邮件中,首次公开谈及这一问题,他表示:所有谈判都是以去哪儿管理层长期主导未来为前提开展. 4月5日,新浪科技报道称 百度 旗下的去哪儿和携程的资本整合,已经接近尾声.随后坊间关于这笔交易的相关猜测频繁出现,而关于未来公司主导权的归属更是成为焦点之一. 对于上述事件,涉事各方一直没有官方表态.不过今日庄辰超发出的一封内部邮件中,首次涉及到于此有关的话题.庄辰超表示:"至于

艺龙促销广告直指携程 去哪儿网CEO称系经典死法

"携程团购没有的,我们有:携程团购有的,我们全部先打9折再减1元!--虽然我们不第一个发动价格战,但是既然价格战来了,我们就会血拼到底!"这是7月1日晚,艺龙旅行网在其微博向携程旅游公开宣战.此举很快引发大量网友围观,携程.艺龙的高管甚至展开激烈的"口水战",互相攻击. 梳理这场争端的始末源于,此前不主张做团购的携程,6月上线了酒店团购业务,抢占一直声称是"酒店团购老大"的艺龙网.随后,极少参与"价格战"还主动出击连续推出各种

PHP经典面试题集锦

 这篇文章主要介绍了PHP经典面试题集锦,搜集整理了常见的php面试题与相关的参考答案,供大家参考借鉴,需要的朋友可以参考下     本文较为详细的分析了PHP经典面试题.分享给大家供大家参考.具体如下: 做了一下网络上的php题目,不知不觉做到现在.....把答案贴出来,供参考之用. 1.用PHP打印出前一天的时间格式是2006-5-10 22:21:21(2分) ? 1 2 $a = date("Y-m-d H:i:s", strtotime("-1 day")

[经典面试题]子数组的最大乘积

题目 给定一个长度为N的整数数组,只允许用乘法,不能用除法,计算任意(N-1)个数的组合乘积中的最大的一组,并写出算法的时间复杂度. 思路一 穷举法 我们把所有可能的(N-1)个数的组合找出来,分别计算它们的乘积,并比较大小.由于总共有N个(N-1)个数的组合,总的时间复杂度为O(N^2),但显然这不是最好的思路. 思路二 空间换时间 计算(N-1)个数的组合乘积,假设第i个(0<=i<=N-1)元素被排除在乘积之外(如下图). 设num[]为初试数组 Left[i]表示前i个元素(包括第i个

PHP经典面试题集锦_php技巧

本文较为详细的分析了PHP经典面试题.分享给大家供大家参考.具体如下: 做了一下网络上的php题目,不知不觉做到现在.....把答案贴出来,供参考之用. 1.用PHP打印出前一天的时间格式是2006-5-10 22:21:21(2分) $a = date("Y-m-d H:i:s", strtotime("-1 day")); print_r($a); 2.echo(),print(),print_r()的区别(3分) echo 和print不是一个函数,是一个语言