94.微软笔试题 求随机数构成的数组中找到长度大于=3 的最长的等差数列

94.微软笔试题 求随机数构成的数组中找到长度大于=3 的最长的等差数列, 输出等差数列由小到大: 如果没有符合条件的就输出 格式: 输入[1,3,0,5,-1,6] 输出[-1,1,3,5] 要求时间复杂度,空间复杂度尽量小

 

void main()
{
 int a[]={1 ,3 ,0 ,5, -1, 6};
 int i ,j ,k,len,  m,n,tmp,t;
 len = sizeof(a)/sizeof(int);
 for(i =0; i<len-1 ;i++)   //从小大的排序
 {
  for(j =i+1 ; j<len ; j++)
  {
   if(a[j]<a[i])
   {
    tmp = a[i];
    a[i] = a[j];
    a[j] = tmp;
   }
  }
 }
    for(i = 0;i<len ;i++)
 {
  printf("%2d",a[i]);
 }
 t = a[len-1]-a[0]-1; //数据的最大间隔 为 7

 for(i = 1 ;i<=t ; i++)
 {
  for(j= 0;j<len-1;j++)
  {
   if( (a[j+1] - a[j]) == i)
   {
    m = j;
    while( (a[m+1] - a[m]) == i)
    {
     m++;
    }
    if( (m-j)>=3 )
    {
                    for(k = j ; k<m ;k++)
     {
      printf("%2d",a[k]);
     }
    }
   }
  }
 }

 


}

 

2.删除串中指定的字符 (做此题时,千万不要开辟新空间,否则面试官可能认为你不适合做嵌入式开发)


 例如 字符串str="abcdef";

要删除字符str1="c";

方法

void shanchu(char *str ,char   c , int len1 )

{

   int i ,j;

   for(i = 0 ; i< len1 ; i++)

   {

          if(str[i] == 'c')

         {

                 strcpy(&str[i] , &str[i+1]);

         }

   }

 

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值