leetcode-每日打卡-day 2

leetcode 每日打卡

附上kuangbin大佬话激励自己:
人一我百,人十我万,追逐青春的梦想,怀着自信的心,永不放弃!
2020.2.9


记录下来自己做题时得思路,并不一定是最优解

#944. 删列造序

class Solution {
public:
    int minDeletionSize(vector<string>& A) {
        int ans = 0;
        for(int i = 0;i < A[0].size();i ++)
        {
            for(int j = 0;j < A.size() - 1;j++)
            {
                if(A[j][i] > A[j + 1][i])
                {
                    ans++;break;
                }
            }
        }
        return ans;
    }
};

#1217. 玩筹码

class Solution {
public:
    int minCostToMoveChips(vector<int>& chips) {
        int j = 0, o = 0;
        for(int i = 0;i < chips.size();i ++)
        {
            if(chips[i] % 2 == 0)o++;
            else j++;
        }
        return min(j,o);
    }
};

#714. 买卖股票的最佳时机含手续费

动态规划 在第 i 天我们需要根据第 i + 1 天的状态来更新cash 或者 hold 的值
对于 cash 我们可以保持不变,或者讲手上的股票卖出
即:

cash = max(cash, hold + price[i] - fee);

对于 hold,我们可以保持不变,或者买入这一天的股票:

hold = max(hold,cash - prices[i]);
class Solution {
public:
    int maxProfit(vector<int>& prices, int fee) {
        int cash = 0,hold = -prices[0];
        for(int i = 0;i < prices.size();i ++)
        {
            cash = max(cash,hold + prices[i] - fee);
            hold = max(hold,cash - prices[i]);
        }
        return cash;
    }
};

测试样例

[1,3,2,8,4,9] 2

cash : 0  0  0  5  5  8
hold :-1 -1 -1 -1  1  1
posted @ 2020-02-09 22:31  _starsky  阅读(162)  评论(0编辑  收藏  举报