算法复健-第九天
本文最后更新于 245 天前,如有失效或谬误请评论区留言。

算法复健-第九天

感觉有点过于水了 没什么用 考虑换换刷题顺序 穿插一些洛谷题

Array-Easy-杨辉三角

题面

给定一个非负整数 numRows生成「杨辉三角」的前 numRows 行。

在「杨辉三角」中,每个数是它左上方和右上方的数的和。

img

示例 1:

输入: numRows = 5
输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]

示例 2:

输入: numRows = 1
输出: [[1]]

提示:

  • 1 <= numRows <= 30

解答过程

本题可以用数学知识解答,用组合数等来推导杨辉三角的公式,但是没必要,通过杨辉三角每个数是左上方和右上方数之和的特性递推解决

代码

 vector<vector<int>> generate(int numRows) {
        vector<vector<int>> ans(numRows);
        for (size_t i = 0; i < numRows; i++)
        {
            ans[i].resize(i+1 , 1);
            for (size_t j = 1; j < i; j++)
            {
                ans[i][j] = ans[i-1][j-1] + ans[i-1][j];
            }

        }
        return ans;
    }

Array-Easy-杨辉三角II

题面

给定一个非负索引 rowIndex,返回「杨辉三角」的第 rowIndex 行。

在「杨辉三角」中,每个数是它左上方和右上方的数的和。

示例 1:

输入: rowIndex = 3
输出: [1,3,3,1]

示例 2:

输入: rowIndex = 0
输出: [1]

示例 3:

输入: rowIndex = 1
输出: [1,1]

提示:

  • 0 <= rowIndex <= 33

进阶:

你可以优化你的算法到 *O*(*rowIndex*) 空间复杂度吗?

解答过程

本题可以直接推出整个杨辉三角,输出对应行,或者采用推出杨辉三角的递推数学公式,这里使用推出的公式解答

代码

vector<int> getRow(int rowIndex) {
        vector<int> ans(rowIndex + 1);
        ans[0] = 1;
        for (int i = 1; i <= rowIndex; ++i) {
            ans[i] = 1LL * ans[i - 1] * (rowIndex - i + 1) / i;
        }
        return ans;
    }

Array-Easy-买卖股票的最佳时机

题面

给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。

你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。

返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0

示例 1:

输入:[7,1,5,3,6,4]
输出:5
解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。
     注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。

示例 2:

输入:prices = [7,6,4,3,1]
输出:0
解释:在这种情况下, 没有交易完成, 所以最大利润为 0。

提示:

  • 1 <= prices.length <= 10^5
  • 0 <= prices[i] <= 10^4

解答过程

本题使用贪心的思想,想象如果我们真正买彩票,一定会想我如果能在价格最低的那天买入就好了,所以我们遍历数组,保存目前的最低价格,并且在每天都计算如果卖出可以赚多少钱,取最大值即可

代码

int maxProfit(vector<int>& prices) {
        int maxM = 0,minP = 1e9;
        for(int price : prices){
            maxM = max(maxM,price - minP);
            minP = min(minP , price);
        }
        return maxM;
    }
以上仅代表个人观点,如有不当之处,欢迎与我进行讨论
版权声明:除特殊说明,博客文章均为Mareep原创,依据CC BY-SA 4.0许可证进行授权,转载请附上出处链接及本声明。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇