算法+面试

本文深入探讨了面试中常见的程序题,包括寻找整数数组中两两之差绝对值最小值的两种算法策略,以及检查字符是否为整数并转换的方法。通过对比遍历和排序策略,展示了不同算法的时间复杂度和实现细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

面试程序题

1.有一个整数数组,请求出两两之差的绝对值最小的值,只要得出最小值即可,不需要求出是哪两个数。

思路一:遍历所有的数据,求出两两之差的绝对值,此方法最暴力

int
Min_Abs(int a[],int N)

{

int min_abs = abs(a[0]);

int temp;

int i ,j ;

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

{

for( j = i+1 ;j < N;++j)

{

temp = abs(a[i]-a[j]);

if( min_abs > temp)min_abs =
temp;

}

}

return min_abs;

}

思路二:排序,然后再求出相邻两数的绝对值比较

void
Q_sort(int a[],int num)

{     int
i = 0;

int j = num - 1;

int k =
a[0];

if (num>1) {//重复的判断条件,如果长度小于2,则不需排序

while (i != j)

{

for (; i<j; j–)

{

m++;

if (a[j]<k)

{

a[i] = a[j];  
n++;   break;

}

}

for (; i<j; i++)

{

m++;

if
(a[i]>k)

{       a[j]
= a[i];    a[j] = a[i];    a[j] = a[i];     break;

}

}

a[i] = k;

}

Q_sort(a, i);

Q_sort(a+i+1, num-i-1);

}

这种算法的复杂度小一点。

2.写一个函数,检查字符是否是整数,如果是,返回其整数值。(或者怎样只用4行代码编写一个从字符串到长整型的函数?)

long
strtoint(char* str, int len) {

if(len > 1) {

return str[0]==’-’ ?

strtoint(str, len-1)*10-(str[len-1]-‘0’) :
strtoint(str, len-1)*10+str[len-1]-‘0’;

} else {

return str[0]==’-’ ? -1/10 :
str[0]-‘0’;

}

}

void
Findx(char *str )

{

int i=0,k = 0,m= 0,num[10];

while(str[i] !=’\0’)

{

if((str[i]>=‘0’)&&(str[i]<=‘9’))

{

m =
i;

while(str[i]>=‘0’&&str[i]<=‘9’) i++;

num[k] = atoi( &str[m] );

k++;

}

i++;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值