自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 资源 (3)
  • 收藏
  • 关注

原创 Leetcode 51. N 皇后

题目链接51. N 皇后题目描述n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。需要满足同一行、列和同一对角线上只能有一个皇后。给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。输入:n = 4输出:[[".Q..","...Q","Q...","..Q."],["..Q.","Q...","...Q",".Q.."]]实

2022-01-13 15:15:47 160

原创 剑指 Offer II 076. 数组中的第 k 大的数字

题目链接:https://leetcode-cn.com/problems/xx4gT2/题目描述:给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例 2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4上次面试遇到这个问题不太了解堆排序和快排partition过程,脑子里只有调库orz

2021-12-29 01:51:01 420

原创 codility 11-2 CountSemiprimes

原题链接:https://app.codility.com/programmers/lessons/11-sieve_of_eratosthenes/count_semiprimes/题目描述质数是一个正整数X,它有两个不同的除数:1和X。最初的几个质数是2、3、5、7、11和13。半质数(semiprime)是一个自然数,它是两个质数的乘积(不一定是不同的)。前几个半素数是4,6,9,10,14,15,21,22,25,26。给定两个非空数组 P 和 Q,每个数组由 M 个整数组成。这些数组表示有

2021-12-19 23:55:50 254

原创 Redis 跳跃表原理

跳跃表跳跃表 (skiplist) 是一种有序数据结构,它通过在每个节点中维持多个指向其他节点的指针从而达到快速访问节点的目的。跳跃表是 redis 有序集合 zset 的底层实现方式之一。(当元素个数<128的时候,用 ziplist 实现)原理首先从有序数组说起,对于有序数据的查找,可以使用二分查找法将时间复杂度降到 O(logn),但是插入和删除都需要 O(n) 的复杂度。再说链表,查找时需要从头节点开始遍历,复杂度为 O(n),不过插入、删除只需要移动指针,复杂度为 O(1)。

2021-11-23 03:08:10 1579

原创 Leetcode 链表相关问题 ( Python版 )

借用栈来从尾到头打印链表剑指 Offer 06. 从尾到头打印链表链表的反转需要灵活应用指针移动来解决相关问题Leetcode 206. 反转链表Leetcode 92. 反转链表 IILeetcode 2. 两数相加使用虚拟头节点来解决链表中的删除问题Leetcode 203. 移除链表元素Leetcode 237. 删除链表中的节点Leetcode 19. 删除链表的倒数第 N 个结点...

2021-11-17 20:39:20 690

原创 Leetcode 二叉树相关问题

104. 二叉树的最大深度111. 二叉树的最小深度226. 翻转二叉树100. 相同的树101. 对称二叉树222. 完全二叉树的节点个数110. 平衡二叉树112. 路径总和404. 左叶子之和

2021-11-05 02:01:26 4080

原创 Leetcode 347. 前 K 个高频元素

题目描述给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]实现class Solution: # 堆实现 def topKFrequent(self, nums: List[int], k: int) -> List[int]: dict_ = dict() # 开辟 dict 空间,存储数组中数字及出现频

2021-11-02 17:21:20 59

原创 二叉树前序、中序、后序深度遍历 (迭代法)

遍历顺序可以看作访问中间节点的顺序前序遍历:中间节点 --> 左子树 --> 右子树中序遍历:左子树 --> 中间节点 --> 右子树后序遍历:左子树 --> 右子树 --> 中间节点二叉树前序遍历(Leetcode 144)利用栈后进先出,先将左孩子入栈,再将右孩子入栈,最后入栈中间节点,当节点为空时,依次出栈def preorderTraversal(self, root: TreeNode) -> List[int]: if not r

2021-10-28 20:48:59 176

原创 Leetcode 19. 删除链表的倒数第 N 个结点

题目描述给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]实现快慢指针,快指针先走n步,两指针再同时走,快指针指向NULL时慢指针就指向要删除的节点,此时只要删除该节点。# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.va

2021-10-27 23:51:07 114

原创 Leetcode 237. 删除链表中的节点

题目描述请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点。传入函数的唯一参数为 要被删除的节点 。链表至少包含两个节点。链表中所有节点的值都是唯一的。给定的节点为非末尾节点并且一定是链表中的一个有效节点。输入:head = [4,5,1,9], node = 5输出:[4,1,9]解释:给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.实现只给了当前要删除的node节点而没有给链表的head节点,无法用普通的方式

2021-10-27 23:39:20 123

原创 Leetcode 203. 移除链表元素

题目描述给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。输入:head = [1,2,6,3,4,5,6], val = 6输出:[1,2,3,4,5]实现要删除一个节点,需要将它前一个节点的指针指向当前的后一个节点,再将当前节点的next指针置为空,就实现了这个节点的删除。创建虚拟头节点为了解决要删除的是head节点的问题。# Definition for singly-linked list.#

2021-10-27 18:40:22 122

原创 Leetcode 2. 两数相加

题目描述给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。输入:l1 = [2,4,3], l2 = [5,6,8]输出:[7,0,2,1]解释:342 + 865 = 1207输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]输出:[8,9,9,9,0,0,0,1]实现数字都是

2021-10-27 17:38:24 141

原创 Leetcode92. 反转链表 II

题目描述给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。输入:head = [1,2,3,4,5], left = 2, right = 4输出:[1,4,3,2,5]实现对于链表1->2->3->4->5,反转第2位到第4位,相当于先拿出3,插入到1和2之间变成1->3->2->4->5,再拿出4插入到1

2021-10-27 00:32:07 162

原创 Leetcode 206. 反转链表

题目描述定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL实现思路如图示用pre指针指向NULL,cur指针指向当前元素,不可用cur.next直接指向pre节点,这样失去与之后节点的联系。所以再创建next指针指向cur.next元素之后将cur.next指向pre节点,此时第一个节点的反转已完成,再将pre,cu

2021-10-26 15:01:16 133

原创 剑指 Offer 06. 从尾到头打印链表

题目描述输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。输入:head = [1,3,2]输出:[2,3,1]实现借用栈后进先出的特性,遍历链表将值加入栈中,再pop栈中元素。时间空间复杂度均为 O(n)# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Nonec

2021-10-26 13:58:27 125

原创 Leetcode 155. 最小栈

题目描述:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。实现:例向minStack依次插入[-2, 0, -3, 1, 2, -4],数据栈依次插入元素,最小栈需要保持最小值在栈顶,当插入元素小于最小栈顶元素或者此时最小栈为空时,将当前元素入栈,否则将最小栈当前栈顶元素重复入栈。此时的数据栈和最小栈数据栈 stack-20-312-4最小栈 min_stack

2021-10-25 21:57:33 148

原创 剑指 Offer 09. 用两个栈实现队列

题目描述:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )实现:队列:先进先出栈: 后进先出两个栈,stack1负责插入元素,插入操作的复杂度为 O(1)。stack2删除元素:如果stack2中有元素,弹出stack2中元素,否则,将stack1中元素一个个弹出到stack2中,再删除stack2中最后一个元素。clas

2021-10-25 17:45:52 67

原创 python cmp_to_key函数

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2021-10-15 18:46:01 432

原创 python 获取非0元素最小值

num_list = [43, 0, 32, 6, 98, 5, 0]min_num = min(filter(lambda x: x != 0, num_list))

2020-11-03 16:58:28 7548

原创 python装饰器详解

​ ​​ 装饰器(Decorators)是一个函数,其主要用途是包装另一个函数或类。这种包装的首要目的是透明地修改或增强被包装对象的行为。表示装饰器的语法是特殊符号@。简单来说,就是在不更改现有函数的情况下增加或修改函数功能。一个简单的装饰器以一个简单的日志打印为例def logging(func): def wrapper(*args, **kwargs): pr...

2019-10-28 10:27:21 137

原创 编辑距离算法(Edit Distance)

概念 编辑距离又称Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。 许可的编辑操作包括 - 将一个字符替换成另一个字符 - 插入一个字符 - 删除一个字符 一般来说,编辑距离越小,两个串的相似度越大。 问题描述 给定两个字符串str1和str2,str1至少经过多少步字符操作变成str2,只有插入,删除,替换这三种操作 。 比如要计算ca...

2018-07-14 16:03:03 2651

canal-admin

canal-admin

2022-06-22

canal-1.1.6

canal-1.1.6

2022-06-22

canal.deployer-1.1.6

canal.deployer-1.1.6

2022-06-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除