/*
* 题目:连续子数组的最大和
* 输入一个整型数组,数组里有正数也有负数。
* 数组中一个或连续的多个整数组成一个子数
* 组。求所有子数组的和的最大值。
*eg: a[8]={1,-2,3,10,-4,7,2,-5}, OUT:{3,10,-4,7,2} 18
*
* 要求:时间复杂度为O(n);
*/
#include<stdio.h>
int maxsonC(int *a)
{
int i,j,max=0,tmp=0;
for(i=0;i<7;i++){
if(a[i]>0)
tmp=1;
}
if(tmp){
tmp =0;
for(i=0;i<7;i++){
if(tmp<0)
tmp=a[i];
else tmp+=a[i];
if(max<tmp)
max=tmp;
}
}
else {
i=0;max=a[i];
if(max<a[i]){
max=a[i];
i++;
}
}
return max;
}
int main(void)
{
int a[8]={1,-2,3,10,-4,7,2,-5};
int max=maxsonC(a);
printf("%d\n",max);
return 0;
}
/*
* 题目:在一个字符串中找到第一个不重复出现在该字符串中的字符并输出该字符
* eg: char a[10] = "abaccewkc"; out:b
*
* 要求:时间复杂度为O(n)
*
* 测试用列:全部重复字符串,全部不重复字符串,空字符串,溢出字符串(加个传参)
*
*/
#include<stdio.h>
char firstone(char *a)
{
int i;
char *pa=a;
int b[256];
for (i=0;i<256;i++){
b[i]=0;
}
while(*(pa)!='\0'){
b[*(pa++)]++;
}
i=0;
pa=a;
while(*(pa)!='\0'){
if(b[*pa]==1)
return *pa;
pa++;
}
return '\0';
}
int main(void)
{
char a[10] ="abaccewkc";
char p=firstone(a);
printf("%c\n",p);
return 0;
}