面试万金油

算法

1.判断手牌中是否有5连的顺子?(排序+找断层)
2.单次抽奖根据权重(一等奖:1 二等奖:3 三等奖:4),判断是否中奖?中了什么奖

 1. sum = 1 + 3 + 4
 2. 随机数1~8, 1(一等奖)、2~4(二等奖)、5~8(三等奖)

3.字符串转数字实现下(大多是机试)

int str2int(const char* str)
{
    int temp = 0;
    const char* ptr = str;  //ptr保存str字符串开头
    if (*str == '-' || *str == '+')  //如果第一个字符是正负号,
    {                      //则移到下一个字符
        str++;
    }
    while (*str != 0)
    {
        if ((*str < '0') || (*str > '9'))  //如果当前字符不是数字
        {                       //则退出循环
            break;
        }
        temp = temp * 10 + (*str - '0'); //如果当前字符是数字则计算数值
        str++;      //移到下一个字符
    }

    if (*ptr == '-')     //如果字符串是以“-”开头,则转换成其相反数
    {
        temp = -temp;
    }
    return temp;
}

4.冒泡排序

    int    flag = 1;   //设置标记变量  
    for (i = 0; i < 10 && flag; i++)  
    {  
        flag = 0;      //只要flag在下一次外循环条件检测的时候值为0,就说明已经排好序,不用继续循环  
        for (j = 9; j > i; j--)  
        {  
            if (array[j] < array[j-1])  
            {  
                swap(&array[j], &array[j-1]);  
                flag = 1;   //如果有交换,就将标记变量赋1  
            }  
        }  
    }  

5.定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)。

1、定义一个栈这里我们称为最小栈,原来的栈我们称为数据栈。

2、最小栈和数据栈元素个数一定相同。最小栈的栈顶元素为数据栈的所有元素的最小值。

3、数据栈入栈一个元素A,最小栈需要拿这个元素与最小栈栈顶元素B比较,如果A小于B,则最小栈入栈A。否则最小栈入栈B。

4、当数据栈出栈一个元素时,最小栈也同时出栈一个元素。

猜你喜欢

转载自blog.csdn.net/zwg739424406/article/details/80244815
今日推荐