详见:https://leetcode.com/problems/ipo/description/

C++:

class Solution {
public:
    int findMaximizedCapital(int k, int W, vector<int>& Profits, vector<int>& Capital) 
    {
        vector<pair<int, int>> v;
        for (int i = 0; i < Capital.size(); ++i)
        {
            v.push_back({Capital[i], Profits[i]});
        }
        sort(v.begin(), v.end());
        for (int i = 0; i < k; ++i)
        {
            int left = 0, right = v.size(), mx = 0, idx = 0;
            while (left < right)
            {
                int mid = left + (right - left) / 2;
                if (v[mid].first <= W)
                {
                    left = mid + 1;
                }
                else
                {
                    right = mid;
                }
            }
            for (int j = right - 1; j >= 0; --j) 
            {
                if (mx < v[j].second) 
                {
                    mx = v[j].second;
                    idx = j;
                }
            }
            W += mx;
            v.erase(v.begin() + idx);
        }
        return W;
    }
};

 参考:http://www.cnblogs.com/grandyang/p/6788811.html

相关文章:

  • 2021-12-03
  • 2021-12-24
  • 2021-09-06
  • 2021-08-26
  • 2021-08-31
  • 2022-12-23
  • 2021-12-30
  • 2021-04-08
猜你喜欢
  • 2021-10-26
  • 2022-12-23
  • 2022-01-30
  • 2019-02-28
  • 2021-04-05
  • 2021-08-16
  • 2021-12-31
相关资源
相似解决方案