当前位置: 首页 > news >正文

7月21日打卡

今天目前写了爬楼梯的三道题目,以及合并有序的链表:最后附有代码

#爬楼梯 三个题目

#(1)普通爬楼梯 每次只能走一个台阶或者两个台阶

#(2)加条件:爬两个台阶之后只能走两个连续的一个台阶

#(3)加条件:怕两个台阶之后只能走一个台阶

自己的感悟:首先就是画图很重要,需要把这个转换的图画出来,如下图所示,这样才更容易写出来:

(2)的图:

(3)的图:

然后的话,自己在写代码的过程中出现的问题:

1.dp[0][0]=1写成了dp[0]=1

2.dp[i][1]=dp[i-2][0] if i-2>=0 else 0 这里注意应该是i-2的自由态 走了两步 然后走到了 i 的限制1的状态 ;           

  dp[i][1]=dp[i-2][0] if i-2>=0 else 0 同理,这个也是i-2的自由态 走了两步 然后走到了i 的 下一步智能走1的状态 

完整的代码如下:

(1)--------------------------------------------

class Solution:

    def climbStairs(self, n: int) -> int:

        a,b=1,1

        for i in range(n-1):

            a,b=b,a+b

        return b

(2)--------------------------------------------

class Solution:

    def climbStairs(self, n: int) -> int:

        if n==1:

            return 1

        dp=[[0,0,0] for _ in range(n+1)]

        dp[0][0]=1

        for i in range(1,n+1):

            dp[i][0]=dp[i-1][0]+dp[i-1][2]

            dp[i][1]=dp[i-2][0] if i-2>=0 else 0

            dp[i][2]=dp[i-1][1]

        return sum(dp[n])    

(3)--------------------------------------------

class Solution:

    def climbStairs(self, n: int) -> int:

        if n==1:

            return 1

        dp=[[0,0,0] for _ in range(n+1)]

        dp[0][0]=1

        for i in range(1,n+1):

            dp[i][0]=dp[i-1][0]+dp[i-1][1]

            dp[i][1]=dp[i-2][0] if i-2>=0 else 0

        return sum(dp[n])

合并有序的链表:

思路就是递归调用,比较简单,在写的过程中出现了一点问题就是:

比较两个链表的第一个值的时候要写l1.val<l2.val而不是l1<l2

# Definition for singly-linked list.

# class ListNode:

#     def __init__(self, val=0, next=None):

#         self.val = val

#         self.next = next

class Solution:

    def mergeTwoLists(self, list1: Optional[ListNode], list2: Optional[ListNode]) -> Optional[ListNode]:

        if not list1:

            return list2

        if not list2: return list1

        if list1.val<list2.val:

            list1.next=self.mergeTwoLists(list1.next,list2)

            return list1

        else:

            list2.next=self.mergeTwoLists(list1,list2.next)

            return list2

http://www.cnnetsun.cn/news/3576282.html

相关文章:

  • Linux基础及命令合集
  • 苹果M6芯片战略调整与2nm工艺技术解析
  • 高性能定时器设计:时间轮算法原理与C++实现详解
  • P2PKH:比特币的「哈希金库」与比特鹰的技术揭秘
  • Python编程入门:从“录取排名”题掌握排序算法与数据处理思维
  • 科技反弹,空头平仓!
  • AI学术写作工具:提升科研效率的智能解决方案
  • Unity视频无缝切换:双播放器预加载与渲染管线优化实战
  • AI写作工具对比:千笔AI与学术猹如何提升论文效率
  • 嵌入式电源管理核心:PSC模块状态机与低功耗实战指南
  • MuMu模拟器5.0跨平台技术解析与性能优化
  • 信奥刷题实战:从Chess问题看BFS算法与C++实现
  • Agent 实操入门 04:怎么跟 Agent 说话,它才能一次就听懂 —— Prompt 指令写作入门
  • 脊柱3D动态形变采集:MinkTec柔性弯曲形变传感器解决真实场景脊柱科研痛点
  • 大语言模型提示技术:从零样本到多轮对话实战指南
  • 人生大道至简的庖丁解牛
  • 元初混沌数学通用解题标准流程(溯源→分层→阴阳量化→维度校正→矛盾消解)
  • Magenta Systems Delphi Internet Component Suite (ICS) 扩展组件介绍
  • LangChain4j与Prompt工程在Java中的实战应用
  • C++图像格式转换实战:从RGB/YUV原理到内存布局与优化实现
  • 深入解析TMS320F2837xS模拟子系统:从ADC、DAC到CMPSS的实战配置
  • isaacsim5.1.0编译报错记录
  • 启创记账适合谁?丹灶小微企业财税服务选择维度参考
  • AI图像生成模型识别与评估:从Midjourney到Stable Diffusion的实用指南
  • YOLOv5/8/10在垃圾分类检测系统中的应用与实践
  • 孟加拉语OCR数据集解析与应用指南
  • YUM包管理工具:Linux软件安装与依赖管理详解
  • 大模型评测全流程解析:从Benchmark设计到分数解读
  • AI Agent开发指南:核心组件与实战技巧
  • AI模型实用部署指南:从环境配置到批量任务优化