远景笔试题两道有先出来的大佬说了leetcode原题,贴代码

第一题股票最大亏损
任意次买卖股票,寻找当前峰值和低谷值,之前做的利润最大,只要将原来的数组逆序就可以了:
#include <iostream>
#include <vector>
#include <algorithm>
#include <sstream>

using namespace std;
int MaxKui(vector<int>& prices) {
        if(prices.empty()) return 0;
        int i = 0;
        int peak = prices[0];
        int valley = prices[0];
        int profit = 0;
        while(i < prices.size() - 1)
        {
            while(i < prices.size() - 1 && prices[i + 1] <= prices[i])
            {
                i++;
            }
            valley = prices[i];
            while(i < prices.size() - 1 && prices[i + 1] > prices[i])
            {
                i++;
            }
            peak = prices[i];
            profit += (peak - valley);
        }
        return profit;
    }


int main()
{
    string str="";
    cin>>str;
    str+=',';
    istringstream is(str);
    vector<int> arr;
    int tmp;
    char c;
    while(is>>tmp>>c)
    {
        arr.emplace_back(tmp);
    }
    reverse(arr.begin(),arr.end());

    if(MaxKui(arr)<0)
    {
        cout<<0<<endl;
    }else
    cout<<MaxKui(arr)<<endl;
    
    return 0;
}
第二题最大光伏面板群:dfs遍历,遍历过的点清0:
#include <iostream>
#include <vector>
#include <cmath>
#include <string>
#include <sstream>

using namespace std;

int dfs(int i,int j,vector<vector<int> > &grid )
{
    int m=grid.size();
    int n=grid[0].size();
    int area=1;
    grid[i][j]=0;
    if(i-1>=0&&grid[i-1][j]==1)area+=dfs(i-1,j,grid);
    if(i+1<m&&grid[i+1][j]==1)area+=dfs(i+1,j,grid);
    if(j-1>=0&&grid[i][j-1]==1)area+=dfs(i,j-1,grid);
    if(j+1<n&&grid[i][j+1]==1)area+=dfs(i,j+1,grid);
    return area;
    
}

int maxArea(vector<vector<int> > &grid)
{
    int m=grid.size();
    int n=grid[0].size();
    if(m==0)
        return 0;
    int ans=0;
    for(int i=0;i<m;++i)
    {
        for(int j=0;j<n;++j)
        {
            if(grid[i][j]==1)
            {
                ans=max(ans,dfs(i,j,grid));
            }
        }
    }
    return ans;
}

int main()
{
    int n,m;
    char c;
    cin>>n>>c>>m;
    vector<vector<int> >grid;
    for(int i=0;i<n;++i)
    {
        string str;
        int temp;
        char c;
        cin>>str;
        vector<int>arr;
        str+=',';
        istringstream is(str);
        while(is>>temp>>c)
        {
            arr.emplace_back(temp);
        }
        grid.emplace_back(arr);
    }
    cout<<maxArea(grid)<<endl;
    
    
    return 0;
}
今天错过科大讯飞的笔试,远景笔试过了给面试吧。。。。。



#笔试题目##远景能源有限公司#
全部评论
你写代码为什么不全?
点赞 回复 分享
发布于 2022-08-21 16:49 山东
老哥 第一题第二题分别是leetcode上哪一题啊 我想去看看...
点赞 回复 分享
发布于 2019-09-12 21:29
和学而思撞了还是选了学而思
点赞 回复 分享
发布于 2019-09-12 20:38
老哥 第二题 可用bfs吧
点赞 回复 分享
发布于 2019-09-12 20:35
我第二题一直80%,不知什么原因
点赞 回复 分享
发布于 2019-09-12 20:34

相关推荐

Xistic:啊哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
投递阿里巴巴集团等公司10个岗位
点赞 评论 收藏
分享
ResourceUt...:楼主有自己的垃圾箱,公司也有自己的人才库
点赞 评论 收藏
分享
评论
4
18
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务