zoukankan      html  css  js  c++  java
  • 2013.4某搜索实习

    1. 两个有序链表的合并(递归)  PS:还有非递归算法 

    思路: 递归的思路主要是两个有序的链表,从头结点开始比较,大的作为合并后的头结点, 比如list1 和 list2, 而除去头结点后的用list1' 和 list2'表示, 

    若list1头结点大于list2的,则保留list1的头结点作为合并后链表的头结点, 而后用 list1'和 list2继续递归合并。代码如下:

    Nod* meg(Nod* list1, Nod* list2)
    {
        Nod* temp = NULL;
        if (list1 == NULL&&list2 == NULL)
        {
            return NULL;
        }
        else if (list1 == NULL)
        {
            return list2;
        }
        else if (list2 == NULL)
        {
            return list1;
        }
        else 
        {
            if (list1->val > list2->val)
            {
                temp = list1;
                temp->next = meg(list1->next,list2);
            }
            else
            {
                temp = list2;
                temp->next = meg(list1,list2->next);
            }
            return temp;
        }
    }

    2. 字符串反序

    感觉题目就是要写一个类似reverse()函数, 用两个指针指向字符串的头尾,没有相遇就swap,不知道还有没有更优的解法。

    看面试官的感觉 似乎还有更优的。。

    char* revs(char *str)  
    {  
        char* start = str;
        char* end = str + strlen(str);
        while (--end > start)
        {
            swap(*end,*start);
            ++start;
        }
        return str;
    } 

    3. static的用法

    (1)局部静态变量

        存储空间在全局静态区  只初始化一次
    (2)外部静态变量/函数

          被static修饰的变量或者函数只能被该文件引用 不能被其他文件引用
    (3)静态数据成员/成员函数

      修饰成员变量或成员函数的唯一性,用static修饰的代表不属于某一实例对象 而是属于整个类

    当时没想到第二点。。只考虑了1,3点。。

    4. 一个数组,其中只有两个数是相同的,如何找到这两个数?

     当时就有点懵,似乎在编程之美见过,但是想不起来了,事后想想似乎hash可以做,

  • 相关阅读:
    js常用方法收集
    Jquery的常用使用方法
    jQuery css()选择器使用说明
    解决IE6,边框问题
    HTML问题集锦及笔记
    我的第一个chrome扩展(3)——继续读样例
    我的第一个chrome扩展(0)——目标
    我的第一个chrome扩展(2)——基本知识
    我的第一个chrome扩展(1)——读样例,实现时钟
    2の奇妙用法
  • 原文地址:https://www.cnblogs.com/itachi7/p/3031649.html
Copyright © 2011-2022 走看看