leetcode刷题(轮转数组、买股票的最佳时机、买卖股票的最佳时机2、跳跃游戏、跳跃游戏2、最大子序列交替和、交替数字和、下降路径最小和)

这篇具有很好参考价值的文章主要介绍了leetcode刷题(轮转数组、买股票的最佳时机、买卖股票的最佳时机2、跳跃游戏、跳跃游戏2、最大子序列交替和、交替数字和、下降路径最小和)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1、轮转数组

2、买卖股票的最佳时机

3、买卖股票的最佳时机②

4、跳跃游戏

5、跳跃游戏2

6、最大子序列交替和

7、交替数字和

8、下降路径最小和


1、轮转数组

leetcode刷题(轮转数组、买股票的最佳时机、买卖股票的最佳时机2、跳跃游戏、跳跃游戏2、最大子序列交替和、交替数字和、下降路径最小和),算法刷题,leetcode,算法,数据结构

class Solution():
    def rotate(self, nums, k):
        def reverse(i, j):    #逆置数组
            while i < j:
                nums[i], nums[j] = nums[j], nums[i]
                i += 1
                j -= 1
            return
        n = len(nums)
        k %= n            #必须要取模运算,因为要考虑到k的值有可能比n的值要大
        reverse(0, n-1)   #首先将整个数组逆置
        reverse(0, k-1)   #将左边k个元素逆置
        reverse(k, n-1)   #再将右边n-k个元素逆置
#这样一来就能实现轮转的目标

2、买卖股票的最佳时机

leetcode刷题(轮转数组、买股票的最佳时机、买卖股票的最佳时机2、跳跃游戏、跳跃游戏2、最大子序列交替和、交替数字和、下降路径最小和),算法刷题,leetcode,算法,数据结构

class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        minprice = float('inf')
        maxprofit = 0
        for price in prices:   #遍历整个数组
            minprice = min(minprice, price)   #记录下最小价格,因为在遍历后面的元素的时候,肯定是要跟前面的最小的去减的
            maxprofit = max(maxprofit, price - minprice)    #比较我当前已经得到的最大收益和我即将可以算得的最大收益,取最大的
        return maxprofit

3、买卖股票的最佳时机②

leetcode刷题(轮转数组、买股票的最佳时机、买卖股票的最佳时机2、跳跃游戏、跳跃游戏2、最大子序列交替和、交替数字和、下降路径最小和),算法刷题,leetcode,算法,数据结构

class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        profit = 0
        for i in range(1, len(prices)):
            temp = prices[i] - prices[i-1]
            if temp > 0:    #后一项减去前一项,只有temp为正的时候才证明股票是上涨的
                profit += temp
        return profit 

4、跳跃游戏

leetcode刷题(轮转数组、买股票的最佳时机、买卖股票的最佳时机2、跳跃游戏、跳跃游戏2、最大子序列交替和、交替数字和、下降路径最小和),算法刷题,leetcode,算法,数据结构

class Solution:
    def canJump(self, nums: List[int]) -> bool:
            n = len(nums)
            furthest = nums[0]        #一上来最远的可以跨越nums[0]的元素大小的长度
            for i in range(1, n):
                if i > furthest:      #如果下标比能跨越的最大长度要大,直接返回否,因为根本来不了这个下标
                    return False
                if i + nums[i] > furthest:   #在这个位置可以跨越的最大位置比最长能跨越的距离大,则修改最长跨越距离
                    furthest = i + nums[i]
                if furthest >= n-1:      #能跨越的最大距离为整个数组,直接就成了
                    return True
            return furthest >= n-1    #等所有都结束,看能跨越的最长距离是不是整个数组,不是则表明失败

5、跳跃游戏2

leetcode刷题(轮转数组、买股票的最佳时机、买卖股票的最佳时机2、跳跃游戏、跳跃游戏2、最大子序列交替和、交替数字和、下降路径最小和),算法刷题,leetcode,算法,数据结构

class Solution:
    def jump(self, nums: List[int]) -> int:
        #贪心法
        end = 0     #表示当前一步能跳的边界
        max_pos = 0    #表示几种可能里面的最大位置
        steps = 0      #表示跳跃次数
        for i in range(len(nums) - 1):      
            #i表示下标
            max_pos = max(max_pos, nums[i] + i)
            if i == end:
                end = max_pos   #边界到达了最大位置
                steps += 1
        return steps

6、最大子序列交替和

leetcode刷题(轮转数组、买股票的最佳时机、买卖股票的最佳时机2、跳跃游戏、跳跃游戏2、最大子序列交替和、交替数字和、下降路径最小和),算法刷题,leetcode,算法,数据结构

#2023.7.11
class Solution:
    def maxAlternatingSum(self, nums: List[int]) -> int:
        n = len(nums)
        f = [0] * (n + 1)
        g = [0] * (n + 1)
        for i, x in enumerate(nums, 1):
            f[i] = max(g[i - 1] - x, f[i - 1])
            g[i] = max(f[i - 1] + x, g[i - 1])
        return max(f[n], g[n])

7、交替数字和

leetcode刷题(轮转数组、买股票的最佳时机、买卖股票的最佳时机2、跳跃游戏、跳跃游戏2、最大子序列交替和、交替数字和、下降路径最小和),算法刷题,leetcode,算法,数据结构

class Solution:
    def alternateDigitSum(self, n: int) -> int:
        sign, ans = 1, 0      #首先将标志记为1,因为第一位取正号;将最终答案记为0,依次运算相加
        for s in str(n):    #挨个取出字符
            num = int(s)    #定义整型
            ans += num * sign   #计算相加
            sign = -sign    #标志位取相反数
        return ans

8、下降路径最小和

leetcode刷题(轮转数组、买股票的最佳时机、买卖股票的最佳时机2、跳跃游戏、跳跃游戏2、最大子序列交替和、交替数字和、下降路径最小和),算法刷题,leetcode,算法,数据结构文章来源地址https://www.toymoban.com/news/detail-566289.html

class Solution:
    def minFallingPathSum(self, matrix: List[List[int]]) -> int:
        n = len(matrix)       # n为方阵大小
        fall_sum = [[0]*n for _ in range(n)]       # 定义状态转移矩阵
        # 首行的下降路径最小和为首行元素本身
        for j in range(n):
            fall_sum[0][j] = matrix[0][j]
        # 从第二行开始生成状态矩阵
        for i in range(1,n):
            for j in range(n):
                fall_sum[i][j] = fall_sum[i-1][j]      # 初始为上一行的下降路径最小和
                if j - 1 >= 0:
                    fall_sum[i][j] = min(fall_sum[i][j], fall_sum[i - 1][j - 1])     # 左一列存在,和上一行的左一列比较
                if j + 1 < n:
                    fall_sum[i][j] = min(fall_sum[i][j], fall_sum[i - 1][j + 1])      # 右一列存在,和上一行的右一列比较、
                fall_sum[i][j] += matrix[i][j]        # 上一行三个位置的最小值加上当前位置元素值
        return min(fall_sum[n - 1])           # 从最后一行中找到下降路径最小和

到了这里,关于leetcode刷题(轮转数组、买股票的最佳时机、买卖股票的最佳时机2、跳跃游戏、跳跃游戏2、最大子序列交替和、交替数字和、下降路径最小和)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 代码随想录 第三十二天 45.跳跃游戏 II||122.买卖股票的最佳时机 II55. 跳跃游戏

    力扣题目链接(opens new window) 给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个位置。 示例  1: 输入: [2,3,1,1,4] 输出: true 解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位

    2024年02月15日
    浏览(56)
  • 算法刷题Day 51 最佳买卖股票时机含冷冻期+买卖股票的最佳时期含手续费

    关键是要画出状态转移图 然后根据状态转移图来写状态转移方程 这道题其实就是在买卖股票II的基础上加入一点变化而已,代码框架还是那个框架。

    2024年02月15日
    浏览(43)
  • 《LeetCode》—— 买卖股票的最佳时机

    本期,我将给大家讲解的是有关动态规划类的题—— 买卖股票的最佳时机 。这个系列总共有四道题。接下来,让我们一起去看看!!! 目录 (一)买卖股票的最佳时机 (二)买卖股票的最佳时机 II (三)买卖股票的最佳时机 III (四)买卖股票的最佳时机 IV LeetCode题目链

    2024年02月05日
    浏览(47)
  • leetcode121. 买卖股票的最佳时机

    题目: 给定一个数组  prices  ,它的第  i  个元素  prices[i]  表示一支给定股票第  i  天的价格。 你只能选择  某一天  买入这只股票,并选择在  未来的某一个不同的日子  卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最大

    2024年02月10日
    浏览(51)
  • 【LeetCode】121.买卖股票的最佳时机

    给定一个数组  prices  ,它的第  i  个元素  prices[i]  表示一支给定股票第  i  天的价格。 你只能选择  某一天  买入这只股票,并选择在  未来的某一个不同的日子  卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最大利润。如

    2024年02月15日
    浏览(39)
  • leetcode 121. 买卖股票的最佳时机

             本题用dp算法做, dp[i]的含义:前 i+1天能获得的最大利润 。 然后每次循环时需要维护一个最小值 min_num :即 i+1天中股票的最低价 。剩下的步骤都很常规,代码如下:         dp[i][0]:第i天持有股票所拥有的最多现金。          dp[i][1]:第i天不持有股票所拥有的最

    2024年02月12日
    浏览(37)
  • 力扣(Leetcode) 121. 买卖股票的最佳时机

    给定一个数组  prices  ,它的第  i  个元素  prices[i]  表示一支给定股票第  i  天的价格。 你只能选择  某一天  买入这只股票,并选择在  未来的某一个不同的日子  卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最大利润。如

    2024年01月25日
    浏览(43)
  • [思维]LeetCode:121.买卖股票的最佳时机

      题目链接:121. 买卖股票的最佳时机 - 力扣(Leetcode)   分析:这里的数据大小为1e5,所以使用暴力会TLE. 思路:我们发现, 需要找到最大利润,其目标就是找到当前第i位后的最大值。换位思考,就是找到当前第i位前的最小值。

    2023年04月09日
    浏览(68)
  • LeetCode-题目整理【3】:买卖股票的最佳时机

    买卖股票的最佳时机 都是求最大利润,但是在没有限制,如121和122,动态规划稍微复杂一些,建议不用,到最后两道难题,题目有限制,使用动态规划通过求解子问题的最优解来逐步求解原问题的最优解。 买卖股票的最佳时机 给定一个数组 prices ,它的第 i 个元素 prices[i]

    2024年01月23日
    浏览(66)
  • LeetCode:121.买卖股票的最佳时机——动态规划

    🍎道阻且长,行则将至。🍓 🌻算法,不如说它是一种思考方式🍀 算法专栏: 👉🏻123 关于动态规划:LeetCode:322. 零钱兑换——动态规划从案例入门 题目描述 :给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只

    2023年04月17日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包