- 博客(24)
- 收藏
- 关注
原创 排序算法python
十大排序算法**$O(n^2) 平方阶排序:∗∗冒泡排序、选择排序、插入排序∗∗平方阶排序 :**冒泡排序、选择排序、插入排序**平方阶排序:∗∗冒泡排序、选择排序、插入排序∗∗O(nlog2n)线性对数阶排序:∗∗快速排序、归并排序、堆排序∗∗线性对数阶排序:** 快速排序、归并排序、堆排序**线性对数阶排序:∗∗快速排序、归并排序、堆排序∗∗O(n1+§)排序,排序,排序,§$ 是介于 0 和 1 之间的常数:**希尔排序线性阶O(n)O(n)O(n)排序: 基数排序,此外还有桶、箱排序**稳
2021-09-14 01:39:27 250
原创 字符串-有效的括号-简中-20210912
字符串-LC20有效的括号-简单-202109121. 题目描述给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例:输入:s = "()"输出:true输入:s = "()[]{}"输出:true输入:s = "(]"输出:false输入:s = "([)]"输出:false输入:s = "{[]}"输出:true提示:1
2021-09-13 22:19:38 615
原创 链表-LC19删除链表的倒数第N个节点-中等-20210909
链表-19删除链表的倒数第N个节点-中等-20210909同:剑指offerⅡ211. 题目描述给你一个链表,删除链表的倒数第 n 个节点,并且返回链表的头节点。**进阶:**你能尝试使用一趟扫描实现吗?【快慢指针】示例:输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]输入:head = [1], n = 1输出:[]输入:head = [1,2], n = 1输出:[1]提示:链表中结点的数目为 sz1 <= sz <= 30
2021-09-11 08:06:11 217
原创 链表-删除链表的重复元素-简单-20210910
链表-LC83删除链表的重复元素-简单-202109101. 题目描述存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。返回同样按升序排列的结果链表。示例:输入:head = [1,1,2]输出:[1,2]输入:head = [1,1,2,3,3]输出:[1,2,3]提示:链表中节点数目在范围 [0, 300] 内-100 <= Node.val <= 100题目数据保证链表已经按升序排列2. 题目解
2021-09-10 23:46:45 331
原创 链表-删除链表的节点-简单-20210910
链表-237删除链表的节点【直接给出一个结点结构(有val和next)】-简单-202109101. 题目描述请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点。传入函数的唯一参数为 要被删除的节点 。现有一个链表 – head = [4,5,1,9],它可以表示为:示例:输入:head = [4,5,1,9], node = 5输出:[4,1,9]解释:给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.输入:head
2021-09-10 23:45:51 408
原创 链表基础-创建链表与遍历
链表基础链表定义线性,动态数据结构;由指针把若干个结点连接成链状结构由两部分组成:数据+指针域(存放下一节点的指点),最后一个节点的指针域指向null(空指针)特点创建链表时,无需知道链表的长度空间效率:当插入一个节点时,只需要为新节点分配内存【内存分配不是在创建链表时一次完成的,每添加一个节点分配一次内存】;无闲置内存,空间效率比数组高【数组在内存中连续分布;链表在内存中可不连续分布,分配机制取决于操作系统的内存管理】时间效率:找到第i个节点,必须从头开始,沿着指向下一个节点的指针遍历链表
2021-09-10 23:44:22 885
原创 数组-231-2的幂-简单-20210908
数组-231-2的幂-简单-202109081. 题目描述给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。如果存在一个整数 x 使得 n == 2x ,则认为 n 是 2 的幂次方。示例:输入:n = 1输出:true解释:20 = 1输入:n = 16输出:true解释:24 = 16输入:n = 3输出:false输入:n = 4输出:true输入:n = 5输出:false提示:-231 <
2021-09-10 14:35:44 140
原创 数组-88合并两个有序数组(只能in-place操作)-简单-20210908
数组-88合并两个有序数组(只能in-place操作)-简单-202109081. 题目描述给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。**注意:**最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个
2021-09-10 14:34:38 111
原创 数组-螺旋矩阵ⅠⅡⅢ-中等-20210907
54螺旋矩阵1. 题目描述给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。示例:[[1, 2, 3], [4, 5, 6], [7, 8, 9]]输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5][[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,
2021-09-10 14:33:35 188
原创 数组-704二分查找-简单-20210906
数组-704二分查找-简单-202109061. 题目描述给定一个 n 个元素**有序的(升序)**整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。示例:输入: nums = [-1,0,3,5,9,12], target = 9输出: 4解释: 9 出现在 nums 中并且下标为 4输入: nums = [-1,0,3,5,9,12], target = 2输出: -1解释: 2 不存在 nums
2021-09-10 14:28:43 97
原创 数组-977有序数组的平方-简单-20210906
数组-977有序数组的平方-简单-202109061. 题目描述给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。示例:输入:nums = [-4,-1,0,3,10]输出:[0,1,9,16,100]解释:平方后,数组变为 [16,1,0,9,100]排序后,数组变为 [0,1,9,16,100]输入:nums = [-7,-3,2,3,11]输出:[4,9,9,49,121]提示:1 <= nums.len
2021-09-10 14:27:54 138
原创 数组-剑指offer3数组中重复的数字-中等-20210807
数组-剑指offer3数组中重复的数字-中等-202108071. 题目描述在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个==高效的函数==,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23,
2021-09-10 14:26:16 90
原创 数组-剑指offer3数组中重复的数字-简单-20210806
数组-剑指offer3数组中重复的数字-简单-202108061. 题目描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任一一个重复的数字。示例:例如,如果输入长度为7的数组[2,3,1,0,2,5,3],那么对应的输出是2或者3。存在不合法的输入的话输出-12. 题目解答2.1 第一次尝试答案-原地交换时间复杂度:O(n)空间复杂度:O(1)# @param numbers int整
2021-09-10 14:24:48 106
原创 树-剑指offer7重建二叉树-中等-20210810python
树-剑指offer7重建二叉树-中等-202108101. 题目描述输入某二叉树的前序遍历和中序遍历的结果,请构建该二叉树并返回其根节点。假设输入的前序遍历和中序遍历的结果中==都不含重复的数字==。示例:示例 1:Input: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]Output: [3,9,20,null,null,15,7]示例 2:Input: preorder = [-1], inorder = [-1]Output
2021-08-24 19:25:14 89
原创 动态规划-斐波那契数列/零钱兑换问题python
学习参考-公众号(labuladong/代码随想录)斐波那契数列-简单-202108221. 题目描述写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。【存储上限问题】F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N -
2021-08-24 19:13:41 575
原创 字符串-剑指offer5替换空格(合并两个已排序数组)-简单-20210808python
字符串-剑指offer5替换空格-简单-202108081. 题目描述请实现一个函数,把字符串 s 中的每个空格替换成"%20"示例:输入:s = "We are happy."输出:"We%20are%20happy."2. 题目解答2.1 常规解法在 Python 和 Java 等语言中,字符串都被设计成**「不可变」的类型**,即无法直接修改字符串的某一位字符,需要新建一个字符串实现。C++可以修改字符串,可以用双指针的方法需要注意不用列表直接用新字符串导致空间复杂
2021-08-24 19:06:18 186
原创 链表-剑指offer6从尾到头打印链表-简单-20210810python
链表-剑指offer6从尾到头打印链表-简单-202108101. 题目描述输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例:输入:head = [1,3,2]输出:[2,3,1]2. 题目解答2.1 反转/=堆栈(效率优)时间复杂度:O(n),reverse()的时间复杂度为O*(*n),遍历了一遍数组,复杂度也为 O(n)空间复杂度:O(n),使用了额外的res思路:从头到尾将链表打印到数组中,返回反转后的结果即可class Solution(objec
2021-08-24 19:05:00 113
原创 树-创建遍历深度路径-20210813python
树-创建遍历深度路径-20210813leeocde144-前序遍历/94-中序遍历/145-后续遍历/102-层序遍历/112-路径和1. 创建树class TreeNode(object): def __init__(self, x, left=None, right=None): self.val = x self.left = left self.right = right# 将输入的列表转化为一颗二叉树,返回根节点class T
2021-08-24 19:00:08 199
原创 树-101镜像树-简单-20210813python
树-101镜像树-简单-202108131. 题目描述给定一个二叉树,检查它是否是镜像对称的。示例:例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3 1 / \ 2 2 / \ / \ 3 4 4 3 / \ / \ / \ / \8 7 6 5 5 6 7 8但是下面这个 [1,2,2,n
2021-08-24 18:58:51 161
原创 数组-209长度最小的子数组-中等-20210906
数组-27移除元素-简单-202107231. 题目描述给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并原地修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例:输入:nums = [3,2,2,3], val = 3输出:2, nums = [2,2]解释:函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组
2021-07-23 22:56:49 138
原创 数组-移除元素零-简单-20210723
数组-283移动零-简单-202107231. 题目描述给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数2. 题目解答2.1 第一次尝试答案伪代码:for 遍历:元素为0,删除,数组末尾加0缺点:时间复杂度N^2/首先应该排除空数组class Solution(object): def moveZ
2021-07-23 22:55:59 275
原创 leecode数组-485最大连续1的个数-简单-20210723python
数组-485最大连续1的个数-简单-202107231. 题目描述给定一个二进制数组, 计算其中最大连续 1 的个数。示例:输入:[1,1,0,1,1,1]输出:3解释:开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3.提示:输入的数组只包含 0 和 1 。输入数组的长度是正整数,且不超过 10,000。2. 题目解答2.1 第一次尝试答案class Solution(object): def findMaxConsecutiveOnes(self, nu
2021-07-23 20:44:55 95
原创 latex学习笔记
Latex介绍LaTeX是什么?TeX(/tɛx/):排版软件,尤其是对于复杂数学公式的处理,数学、物理学和计算机科学界十分流行。LaTeX(/ˈlɑːtɛx/):是一种基于TeX的排版系统,即使用户没有排版和程序设计的知识也可以充分发挥由TeX所提供的强大功能,不必一一亲自去设计或校对,LaTex软件介绍环境和编辑器区分,就像python环境(编译器环境)和pycharm\jupyter(编辑器)区分一样运行环境(3种):LaTeX类似于Linux系统,它有多个发行版,例如 M
2021-07-23 13:37:58 1891
原创 Leecode-每日一题
Leecode-每日一题刷题方法要刷多少题?每个类型的题目10-20题(动态规划多多益善)总共200~300题如何刷题?同类型题目一起刷,总结相似与不同(白天刷新题,晚上复习旧题)周一:树/链表/搜索/动态规划周二:周三:周四:周五:周六:周日:刷三遍第一遍:五分钟想不出来看答案第二遍:尝试不看答案完整实现(一道题不超过60min)第三遍:3天后,尝试15-20分钟快速实现看别人代码看3-5种不同的实现,分析别人的代码优缺点,为什么速度快/慢?
2021-07-23 13:13:07 183
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人