09 2022 档案
摘要:题目 剑指 Offer 05. 替换空格 请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 示例 1: 输入:s = "We are happy." 输出:"We%20are%20happy." 思路 双指针,类似于27. 移除元素这道题 注意:字符串是不可变类型,不能直接在源字符串上修
阅读全文
摘要:题目 704 二分查找 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 示例 1: 输入: nums = [-1,0,3,5,9,12], target = 9 输出: 4 解
阅读全文
摘要:题目 209长度最小的子数组 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。 示例
阅读全文
摘要:题目 977有序数组的平方 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。 示例 1: 输入:nums = [-4,-1,0,3,10] 输出:[0,1,9,16,100] 解释:平方后,数组变为 [16,1,0,9,100] 排序
阅读全文
摘要:题目 344 反转字符串 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 示例 1: 输入:s = ["h","e","l","l","o"] 输出:["o","l
阅读全文
摘要:题目225 用队列实现栈 思路 两个方法:分别是一个队列模拟栈和两个队列模拟栈 一个队列模拟栈 当栈pop时,只要把队列的前size-1个元素依次放入到队列末尾即可 代码 class MyStack: # 使用一个队列实现栈 def __init__(self): self.queue = [] d
阅读全文
摘要:题目 232 用栈实现队列 思路 使用栈来模式队列的行为,如果仅仅用一个栈,是一定不行的,所以需要两个栈一个输入栈,一个输出栈,这里要注意输入栈和输出栈的关系。 **注意:**判断队列是否为空,只有输入栈和输出栈同时为空时队列才为空 代码 class MyQueue: def __init__(se
阅读全文
摘要:一:None None是python中的一个特殊的常量,表示一个空的对象。 数据为空并不代表是空对象,例如空列表:[],等都不是None。 None有自己的数据类型NontType。 二:False Python中数据为空的对象以及None对象在条件语句都作False看待:即 None,False,
阅读全文
摘要:题目赎金信 给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以,返回 true ;否则返回 false 。 magazine 中的每个字符只能在 ransomNote 中使用一次。 示例 1: 输入:ran
阅读全文
摘要:题目 202快乐数 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。 如果这个过程 结果为 1,那么这个数就是快乐数。 如果 n 是 快乐数
阅读全文
摘要:题目 两个数组的交集 给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 示例 1: 输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2] 示例 2: 输入:nums1 = [4,9
阅读全文
摘要:哈希的简单了解 https://www.bilibili.com/video/BV1bb4y1s7mw?p=62&vd_source=d6067928eb906629adf6cc260761df74 题目 242 有效的字母异位词 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的
阅读全文
摘要:题目27 移除元素 思路: 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组 要知道数组的元素在内存地址中是连续的,不能单独删除数组中的某个元素,只能覆盖。 双指针法(快慢指针法): 通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。 定义快慢指针: 快
阅读全文
摘要:题目142 环形链表 思路 主要考察两个点:一个判断是否有环,二是找到环的入口 一、判断链表是否有环 可以使用快慢指针法,分别定义 fast 和 slow 指针,从头结点出发,fast指针每次移动两个节点,slow指针每次移动一个节点,如果 fast 和 slow指针在途中相遇 ,说明这个链表有环。
阅读全文
摘要:题目 链表相交 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,函数返回结果后,链表必须 保持其原始结构 。 示例 1: 输入
阅读全文
摘要:题目19 删除链表的倒数第N个节点 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例1: 输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] 示例 2: 输入:head = [1], n = 1 输出:[] 示例 3: 输入:head = [1
阅读全文
摘要:题目24 两两交换链表中的节点 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 示例1: 输入:head = [1,2,3,4] 输出:[2,1,4,3] 示例 2: 输入:head = [] 输出:[] 示例 3
阅读全文
摘要:题目206 反转链表 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2: 输入:head = [1,2] 输出:[2,1] 示例 3: 输入:head = [] 输出:[] 双指针思路:
阅读全文
摘要:题目203 移除链表元素 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。 示例 1: 输入:head = [1,2,6,3,4,5,6], val = 6 输出:[1,2,3,4,5] 示例 2: 输入:h
阅读全文
摘要:以==引用计数==为主,==标记清除==和==分代回收==为辅,分代回收是建立在标记清除之上。 引用计数:有一个ob_refcnt记录对象引用次数,当一个对象有新的引用时,值加1,当引用它的对象被删除时,值减一,当值为0时,这个对象的生命结束,启用垃圾回收机制回收该对象。 优点:简单,实时性高(只要
阅读全文