算法
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、当数据栈出栈一个元素时,最小栈也同时出栈一个元素。