[经典面试题][暴风影音]暴风影音2014校招笔试题

简介:
  1. 合并两个已经排序的单链表为一个排序的单链表,相同内容只保留一个如:单链表a:1->2->3->4 单链表b:3->4->5 输出:1->2->3->4->5

    具体参考:[LeetCode]21.Merge Two Sorted Lists

    /*---------------------------------------------
    *   日期:2015-02-23
    *   作者:SJF0115
    *   题目: 合并排序链表
    *   来源:暴风影音
    *   博客:
    -----------------------------------------------*/
    #include <iostream>
    #include <climits>
    using namespace std;

    struct ListNode{
        int val;
        ListNode *next;
        ListNode(int x):val(x),next(NULL){}
    };
    //
    ListNode* MergeSortedList(ListNode *list1,ListNode *list2){
        // 头节点
        ListNode *head = new ListNode(-1);
        ListNode *p = head;
        int val1,val2;
        // 合并
        while(list1 != NULL || list2 != NULL){
            val1 = (list1 == NULL) ? INT_MAX : list1->val;
            val2 = (list2 == NULL) ? INT_MAX : list2->val;
            // 相同内容只保留一个
            if(val1 == val2){
                p->next = list1;
                list1 = list1->next;
                list2 = list2->next;
            }//if
            // 当前链表1else if(val1 < val2){
                p->next = list1;
                list1 = list1->next;
            }
            // 当前链表2else{
                p->next = list2;
                list2 = list2->next;
            }
            p = p->next;
        }//while
        return head->next;
    }

    int main() {
        int A[] = {1,2,4,7,9};
        int B[] = {1,3,4,8,9,11,12};
        // 链表1
        ListNode *head1 = new ListNode(A[0]);
        ListNode *p1 = head1;
        for(int i = 1;i < 5;i++){
            ListNode *node = new ListNode(A[i]);
            p1->next = node;
            p1 = node;
        }//for
        // 链表2
        ListNode *head2 = new ListNode(B[0]);
        ListNode *p2 = head2;
        for(int i = 1;i < 7;i++){
            ListNode *node = new ListNode(B[i]);
            p2->next = node;
            p2 = node;
        }//for
        ListNode *head = MergeSortedList(head1,head2);
        // 输出
        ListNode *p = head;
        while(p){
            cout<<p->val<<" ";
            p = p->next;
        }//while
        cout<<endl;
    }

2.编写程序,在原字符串中把尾部m个字符移动到字符串的头部,要求:长度为n字符串操作时间复杂度为O(n),时间复杂度为O(1)。
如:原字符串为”Ilovebaofeng”,m=7,输出结果:”baofengIlove”。

待续。。。。

3.暴风影音的片源服务器上保存着两个文件a和b,各存放50亿条URL,每条URL占用64字节,内存限制是4G,让你找出a,b文件共同的URL。要求:算法设计。

待续。。。。
目录
相关文章
|
人工智能 算法 Serverless
算法竞赛入门【码蹄集新手村600题】(MT1301-1350)
算法竞赛入门【码蹄集新手村600题】(MT1301、MT1302、MT1303、MT1304、MT1305......MT1350)
654 2
算法竞赛入门【码蹄集新手村600题】(MT1301-1350)
|
存储 数据采集 数据格式
【蓝桥杯嵌入式】蓝桥杯第十三届省赛程序真题,真题分析与代码讲解
【蓝桥杯嵌入式】蓝桥杯第十三届省赛程序真题,真题分析与代码讲解
619 0
【蓝桥杯嵌入式】蓝桥杯第十二届省赛程序真题,真题分析与代码讲解
【蓝桥杯嵌入式】蓝桥杯第十二届省赛程序真题,真题分析与代码讲解
246 0
【蓝桥杯嵌入式】蓝桥杯第十二届省赛程序真题,真题分析与代码讲解
【蓝桥杯嵌入式】蓝桥杯第十届省赛真题,程序题全解析(含代码)
【蓝桥杯嵌入式】蓝桥杯第十届省赛真题,程序题全解析(含代码)
338 0
|
算法 Serverless C++
算法竞赛入门【码蹄集新手村600题】(MT1501-1550)
算法竞赛入门【码蹄集新手村600题】(MT1501、MT1502、MT1503、MT1504、MT1505......MT1550)
467 1
算法竞赛入门【码蹄集新手村600题】(MT1501-1550)
|
机器学习/深度学习 算法 Serverless
算法竞赛入门【码蹄集新手村600题】(MT1451-1500)
算法竞赛入门【码蹄集新手村600题】(MT1451、MT1452、MT1453、MT1454、MT1455......MT1500)
497 1
算法竞赛入门【码蹄集新手村600题】(MT1451-1500)
|
算法 Java BI
算法竞赛入门【码蹄集新手村600题】(MT1551-1600)
算法竞赛入门【码蹄集新手村600题】(MT1551、MT1552、MT1553、MT1554、MT1555......MT1600)
276 1
算法竞赛入门【码蹄集新手村600题】(MT1551-1600)
|
人工智能 算法 搜索推荐
算法竞赛入门【码蹄集新手村600题】(MT1401-1450)
算法竞赛入门【码蹄集新手村600题】(MT1401、MT1402、MT1403、MT1404、MT1405......MT1450)
307 1
算法竞赛入门【码蹄集新手村600题】(MT1401-1450)
|
存储 算法 C语言
算法竞赛入门【码蹄集新手村600题】(MT1001-1050)
算法竞赛入门【码蹄集新手村600题】(MT1001、MT1002、MTT1003、MTT1004、MTT1005......MT1050)
1348 1
算法竞赛入门【码蹄集新手村600题】(MT1001-1050)
|
算法 C语言 C++
算法竞赛入门【码蹄集新手村600题】(MT1251-1300)
算法竞赛入门【码蹄集新手村600题】(MT1251、MT1252、MT1253、MT1254、MT1255......MT1300)
426 1
算法竞赛入门【码蹄集新手村600题】(MT1251-1300)