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可以做,

  • 相关阅读:
    配置struts2拦截器
    <global-results>标签来定义全局的<result>
    StringUtils.isEmpty和StringUtils.isBlank用法
    Tomcat xxx unbound
    getRequestDispatcher()和response.sendRedirect()
    转 intValue()的用法
    jspf与jsp的区别
    table标签中thead、tbody、tfoot的作用
    hibernate的cascade
    hibernate 持久化对象的三个状态
  • 原文地址:https://www.cnblogs.com/itachi7/p/3031649.html
Copyright © 2011-2022 走看看