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

leetcode笔记

大小排序数组,找指定元素。 二分法

数组找元素k,把不是k的都放到数组前面,并返回不是k的个数。 双指针

数组平方排序到新数组——双指针

螺旋矩阵,判断的时候要写《=这样收缩到一行的时候也可以填充

区间和——前缀和,先求出从0元素开始到各个可能的区间和

—链表---

创建测试链表的简单方法

head = ListNode(1)
head.next = ListNode(2)
head.next.next = ListNode(3)
head.next.next.next = ListNode(4)
head.next.next.next.next = ListNode(5)
head.next.next.next.next.next = head.next.next  # 5 -> 3 构成环

链表删除指定元素————虚拟头节点简化
自定义一个类实现链表的操作————注意写函数的时候先注意实现功能,看代码的时候注意哪里是实现功能的。比如在尾部插入链表节点 首先找到尾部,再插入节点,在下面的代码中就是while循环部分 。接下来再改bug 比如需要判断,如果原来链表就是空的,那么就不需要查末尾操作了,所以新加判断,如果空,直接把添加的指向头节点。注意不需要当前操作的,才进行判断

  def addAtTail(self, val: int) -> None:new_node = ListNode(val)  # 创建一个新节点if not self.head:  # 如果链表为空self.head = new_node  # 直接将头节点指向新节点returncurrent = self.headwhile current.next:  # 遍历到链表的最后一个节点current = current.nextcurrent.next = new_node  # 将新节点追加到链表的尾部

链表相交————两个指针从a链表走完到b链表交点处,两个指针从头节点到交点路程相等

链表环————快慢指针,在环内每次追一步,一定会重合。

—————哈希表——————

哈希表(Hash Table) 是一种数据结构,用于存储键值对(key-value),而 Python 的字典 dict 就是哈希表的实现。用{}创建哈希表。哈希表就是元素不是数字的数组,数组就是简单的哈希表

有效的字母异位词:和哈希表无关,用对应的数组储存26个英文字母,然后一个对应加,一个对应减,看最后数组是不是0向量

两个数组的交集:使用集合找交集,集合就是用哈希表实现的 哈希表(字典)的if in只比较key 正常列表的if in只比较元素-CSDN博客

是否快乐数:使用集合检查数字不重复,使用n = sum(int(digit) ** 2 for digit in str(n))语句实现数字各位的平方和

两个索引的值的和是目标数:num_to_index[num] = i 储存到哈希表 由于最后想要索引,所以数值是key,索引是value

四数和是0的组合数:使用哈希表,查找对应匹配的数。防止4层for循环复杂 defaultdict 的用处-CSDN博客

赎金信:把每个字符都放到哈希表里,另ransom note中的字符都包含在杂志的哈希表中

三数之和:固定第一个元素,双指针在两边,如果大于0就右指针移动 小于0就左指针移动。然后双指针在后面的元素遍历,找到使三个数相加等于0的数。再固定第二个数,此时双指针不需要遍历到第一个元素了,包括第一个元素的所又可能已经找全了

四数之和:注意每一个循环的出现,代表一个指针的迭代。注意 其中的元素实如[-1 -1 2]是可以重复的,但是输出不能出现两个[-1 -1 2]。

四数之和的一些判断怎么记忆-CSDN博客 四数之和指针迭代如下图

本题在确定了前两个指针后,最后两指针使用双指针方法,当然也可以再确定第三个指针后遍历第四个指针(暴力法)

—————字符串——————

字符串和数组一样,索引是整数,不过元素是字符,此外字符串不可被改变
s = "hello"
s[0] = "H"  # ❌ 会报错

反转字符串:双指针法。或者python的s[::-1]可以直接生成一个以-1为步长的反转字符串。注意是原地反转字符串python反转字符串-CSDN博客

----栈与队列---

栈就是数组,队列有deque。pop函数是把队列当栈用,要注意只使用队列的时候不能这么干。
在仅使用栈实现队列或者使用队列实现栈的时候就不能用双端队列的功能,单如果是实现其他功能这就可以用

逆波兰表达式求值:挨个放到栈里,碰到运算符就运算前asfsda

http://www.dtcms.com/a/362123.html

相关文章:

  • OpenCV轻松入门_面向python(第四章色彩空间类型转换)
  • 从全栈开发到微服务架构:一次真实面试的深度解析
  • Ansible 常用模块归纳总结
  • 【Axure高保真原型】表格增删改查(含下拉列表)
  • Swift 解法详解:LeetCode 368《最大整除子集》
  • SQL Server从入门到项目实践(超值版)读书笔记 25
  • 使用 Google OR-Tools 轻松解决复杂优化问题(如排程优化)
  • HarvardX TinyML小笔记2(番外3:数据工程)
  • Node.js版本管理工具 || 全配置安装
  • Claude AI 因编写勒索软件和开展勒索活动而被滥用
  • Agent落地元年:谁在成为最坚实的土壤?
  • 【前端】跨域
  • 懒加载详细讲解
  • 在Linux系统上第一次创建java项目并运行
  • `[特殊字符]LeetCode每日一题 1792. 最大平均通过率(打卡第一天)`
  • 在 React Native 层禁止 iOS 左滑返回(手势返回/手势退出)
  • Unity 串口通讯2 硬件SDK 开发[数据监听,按键监听]
  • 人工智能——课程考核
  • Python OpenCV图像处理与深度学习:Python OpenCV图像几何变换入门
  • 线程池发生了异常该怎么处理?
  • Groovy 的核心语法
  • 计算机视觉与深度学习 | 传统图像处理技术的未来发展前景分析
  • 算法练习——169.多数元素
  • 焦耳热技术助力顶刊研究:薄层质子交换膜实现高效水电解制氢
  • 深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)第八章知识点问答(18题)
  • 在工业质检中,机器视觉与人工检测的决策依据
  • Java类加载机制
  • 亚马逊云代理商:如何选择适合的AWS EC2实例类型?
  • ARM-SPI屏幕案例
  • 1. 叙述与命题