一.数据结构相关
今天开始学习数据结构,首先是了解什么事数据结构与算法,然后学习了时间复杂度。
关于时间复杂度,学习了对于一个代码如何求其时间复杂度的方法,其中比较重要的地方是大O的渐进表示法。
这里需要注意:时间复杂度是描述输入条件对时间增长趋势的影响
所以就有大O渐进表示法的使用,如下:
大O的渐进表示法:1.只留高阶
2.最高项存在且倍数不等于1时,直接将系数视作1即可
3.没有N的相关项,只有常数项,时间复杂度为1
二.oj练习题
1.表达式括号匹配
这道题不难,解题关键点在于如何正确找到能够判断括号是否匹配的方法。
这里有一个比较好的思路:我们设一个n,然后遍历数组,如果遇到‘(’那么n就+1,如果遇到‘)’就-1。那么就可以得出,当n<-1时,直接判断不匹配,或者遍历结束,最终n>0,那么也不匹配。而最后如果是n==0成立,就说明括号之间互相匹配。
下面是代码:
#include<stdio.h>
int main()
{
char arr[255];
scanf("%s", arr);
int n = 0;
int i = 0;
while (i<=255)
{
if (arr[i] == '(')
{
n++;
}
else if (arr[i] == ')')
{
n--;
}
else if (arr[i] == '@')
{
if (n == 0)
printf("YES");
else
printf("NO");
break;
}
//判断括号是否匹配(还没碰到@时的判断)
if (n < 0)
{
printf("NO");
break;
}
i++;
}
return 0;
}