zoukankan      html  css  js  c++  java
  • leetcode-16-greedyAlgorithm

    455. Assign Cookies

    解题思路:

    先将两个数组按升序排序,然后从后往前遍历,当s[j] >= g[i]的时候,就把s[j]分给g[i],i,j都向前移动,count+1;否则向前移动i,直到可以找到这样的i。

    还是很典型的贪心算法啊。

    int findContentChildren(vector<int>& g, vector<int>& s) {
            sort(g.begin(), g.end());
            sort(s.begin(), s.end());
            int i = g.size() - 1;
            int j = s.size() - 1;
            int count = 0;
            while (i >= 0 && j >= 0) {
                if (g[i] > s[j])
                    i --;
                else {
                    i --;
                    j --;
                    count ++;
                }
            }
            return count;
        }
    

    122. Best Time to Buy and Sell Stock II

    解题思路:

    这道题的话,只要考虑临近两天的情况就好了。如果第二天卖的价格高于第一天买入的价格,收益为正,就可以进行。另外,当prices为空或者只有一个

    元素时,显然不能买入,收益应该保持0。

    int maxProfit(vector<int>& prices) {
            if (prices.size() <= 1)
                return 0;
            int i;
            int sum = 0;
            for (i = 0; i < prices.size() - 1; i++ ) {
                sum += max((prices[i+1] - prices[i]), 0);
            }
            return sum;
        }

    与上面相关的是这道题:

    121. Best Time to Buy and Sell Stock

    解题思路:

    遍历一遍prices,用Min表示当前找到的最小值,用Max记录最大收益。找Max时,如果当前prices[i]-Min < Max,那么Max就不变。

    int maxProfit(vector<int>& prices) {
            if (prices.size() <= 1)
                return 0;
            int Min = prices[0];
            int Max = 0;
            for (int i = 0; i < prices.size(); i++) {
                Min = min(Min, prices[i]);
                Max = max(Max, prices[i] - Min);
            }
            return Max;
        }
    

      

      

  • 相关阅读:
    day-7
    Redis数据库 : 基础
    MongoDB与python交互
    MongoDB数据库 : 管道,用户管理,副本集等
    MongoDB数据库 : 基础
    MySQL数据库 : 自关联,视图,事物,索引
    MySQL数据库 : 查询语句,连接查询及外键约束
    MySQL数据库 : 基本语句
    数据结构与算法 : 树与遍历
    python__标准库 : 测试代码运行时间(timeit)
  • 原文地址:https://www.cnblogs.com/pxy7896/p/6625899.html
Copyright © 2011-2022 走看看