您的位置:首页 > 其它

阿里巴巴校招一道笔试题

2020-07-25 11:51 211 查看

Description:

现在有N个盘子,第 i 个盘子放了 si 个烧饼,小明可以任意选一个数字 x,x介于 1 和 N 之间,他可以从 1 到 x之间的盘子都吃一个烧饼。如果 1 到 x 个盘子中有一个盘子没有烧饼,那么他不能选择这个 x。 假设小明胃口无限大,求小明能吃的最多的烧饼数量。

sample test case:

N = 3;
nums = {2, 1, 3};

output = 4;

解释:首先小明可以吃1-3个盘子的烧饼,共计三个,吃完后小明只能吃第一个盘子的烧饼,共计四个。所以答案是4。

Solution
核心思路其实很简单:vector中每一个元素都遍历一遍,用一个min来记录当前为止都最小值,表示这个位置之后的盘子中的烧饼最多能被吃几次。答案就是min的总和。
代码如下:

int main()
{
int n = 3;
vector<int> obj;
obj.push_back(2);
obj.push_back(1);
obj.push_back(3);

int result = 0;
int min = INT32_MAX;
vector<int>::iterator it;
for(it = obj.begin(); it != obj.end(); ++it) {
min = min < *it ? min : *it;
result += min;
}
cout << result << endl;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐