用友面试
技术面:
项目介绍
写代码:
1. 排序算法会哪些?写一个快排?
2. 字符串中的每一个单词进行反转?
3. 一个数组,求连续最大和?
思路:
根据sum判断,如果sum>0说明sum对于后面的求和有加成,所以加上sum;否则看sum当前的数哪一个大保留哪一个数;
然后,比较sum和Max的大小,如果sum>Max就把sum赋值给Max;
代码如下:
//连续最大和
#include<cstdio>
#include<vector>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<cmath>
using namespace std;
const int maxn = 5005;
int main()
{
int n;
cin>>n;
int x;
vector<int> vec;
for(int i=0;i<n;i++){
cin>>x;
vec.push_back(x);
}
int sum=vec[0];
int Max=vec[0];//最好不要和max函数同名,否则后边调用max函数会出错
for(int i=1;i<n;i++){
if(sum>=0){
sum=sum+vec[i];
}
else{
sum=max(sum,vec[i]);
}
if(Max<sum){
Max=sum;
}
}
cout<<Max<<endl;
system("pause");
return 0;
}
4. 树的三种遍历,会写吗?说可以写出递归遍历的方法,最后没让写。
综合面:

浙公网安备 33010602011771号