首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

89 次荣登活跃榜,最高排名第 9 ,从零学算法第二周周报发布

15 程序员为什么学算法 昨日作业题总结 迭代法: 今日作业题 Day 16 时间复杂度入门 为什么要学算法,25位星友给出各自的答案 今日作业题 Day17 算法好坏度量:大 O 记号 1 数学定义...这两天训练链表时,也有一些星友实际上完成了列表转化为链表的任务,代码如下所示: 传入lst转化链表返回cur_Node: 以上代码实现有一个巧妙之处:self.head=ListNode(None),设置一个空的哨兵表头...今日作业题 反转单链表检验我们是否能够真正灵活使用它,也是面试频频被问道的一个题目。 例如反转上面单链表的方法之一: 黑色结点的下一个结点现在是空。因此,我们停止这一过程并返回新的头结点 15。.../195/classic-problems/750/ Day 15 程序员为什么学算法 昨日作业题总结 反转链表的方法:迭代和递归。...打卡 300 天,退还除平台收取的其他所有费用。 Day 16 时间复杂度入门 为什么要学算法,25位星友给出各自的答案 近来经常有朋友问,程序员需要学算法吗?为什么需要学算法?

67810
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    牛客网剑指offer-1

    剑指offer刷题 二维数据中的查找 题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。...当其中某一个链表为空时,只需要返回另一个链表即可,这种情况需要单独讨论 当两个链表均不为空时,我们需要去比较结点两个链表中结点的大小,当l1的结点值小于l2的结点时,我们就需要将l2合并到l1上,把l2...假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。...NOTE:给出的所有元素都大于0,若数组大小为0,请返回0 分析 使用py的内建函数直接求得最小值 class Solution: def minNumberInRotateArray(self...(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 分析 这里给出的解法的核心就是使用两个字典保存随机节点和新老节点的对应,在需要构建的节点直接取出赋值 class RandomListNode

    1.3K10

    LeetCode刷题记录(easy难度21-40题)

    题意分析: 给定一个二叉树,判断其是否是平衡二叉树 思路分析 在上一题的分析中,我们已经知道了什么叫做平衡二叉树。题目给出的方法返回值的bool类型,不利于我们去循环递归的判断它。...我们可以单独写一个check函数,其返回值是int类型。当函数返回-1时,该二叉树为非平衡二叉树,当函数返回值不为-1时,该二叉树为平衡二叉树。...: return 0 # 递归得出左子树的返回值 left = self.check(root.left) # 递归得出右子树的返回值...题意分析: 求出二叉树的最小深度 思路分析 如果该树为空,需要单独讨论,返回深度为0.递归调用自己,传入根节点的左子树和右子树,如果其中有空节点,那么此时的left或者right就有值为0,既然求的是最小的深度...思路分析 如果不看例子,我们估计不知道什么叫帕斯卡三角形,题目也给出了我们一个例子。我们需要从每一行中找出规律,才能得到结果。

    1.4K10

    3500 字算法刷题精华总结

    Day 18:二分查找算法 Day 17 作业题 写出几种常见复杂度对应的算法,星友们给出的答案都很准确,在这里参考星友聂磊的答案: 时间复杂度: 常见操作:哈希查找,数组取值,常数加减乘除 : 二分查找...此时栈顶为入参 f 的函数,位于示意图的最底部。 因为它满足了递归返回条件len(s) 并返回值 f,下一个即将出栈的为入参ef的函数,其返回值为fe,如下所示: ?...其他使用递归反转字符串的方法,大家多看看其他星友的解法即可。 Day 23:使用递归:两两交换链表中的节点 给定链表,交换每两个相邻节点并返回其头节点。...pass # 请补充 Day 24:递归生成杨辉三角 先来总结昨天的作业 Day 23:递归两两交换链表中的节点 给定链表,交换每两个相邻节点并返回其头节点。...Day 24:递归生成杨辉三角 给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。 ?

    53310

    Python3.0科学计算学习之函数

    函数 函数允许程序的控制在不同的代码片段之间切换,函数的重要意义在于可以在程序中清晰地分离不同的任务,将复杂的问题分解为几个相对简单的子问题,并逐个解决。即“分而治之”。  ...return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。    ...return(z) a=[10,20] b=subtract(a)    print(b)    #返回-10 print(a)      #返回[10,50.0] (3) 默认参数 默认值是定义函数时已经给出的值...示例:def append_to_list(L,x): append(x)       #注意:该函数没有返回值,是由于它修改了给出的参数对象中的其中一个L。...这里仅提到了列表方法,如append、extend、reverse、sort方法不返回任何值(返回None),当通过这种方法来修改对象时,修改被称为原位修改。 4.

    1.3K20

    图解精选 TOP 面试题 004 | LeetCode 108. 将有序数组转换为二叉搜索树

    9 / / -10 5 解题思路 题目给出了一个升序排序的有序数组,要求我们转换为一棵高度平衡二叉搜索树。...同上述步骤,将 [-10, -3] 和 [5, 9] 单独看作两棵树,从而继续为他们构造左右子树。...因此,递归函数的作用很明显: 选取要构造关系的节点并创建它 构造该节点的左子树 构造该节点的右子树 函数的输入为递增数组,函数的返回为完成构造的节点。...何时结束 当输入的递增数组为空时,只能构成一棵空树,此时返回空节点。 何时调用 当构造节点的左右子树时,对递增数组进行拆分并进行递归调用。...self.right = None class Solution: def sortedArrayToBST(self, nums: List[int]) -> TreeNode:

    89720

    LeetCode 二叉树问题小总结

    这里我们也使用了递归,但是这次的递归函数是有返回值的,而且你也可以看到的是,我们没有将保存结果的 list 传入函数。...和之前的递归遍历的思路相比的话,代码实现上面的区别可能就是,是将 result list 放在参数中,还是放在返回值中,但是思考方向是截然相反的。 这里就不好用之前的 “小人游走” 来解释了。...我这里给出了一个递归转非递归的通用方法,不仅仅适用于树的问题,对于任何的递归问题都适用,这个方法也是我在 LeetCode 的 discuss 中看到的,还是拿上面中序遍历作为例子,之前我们的代码实现:...这个好解释,递归的解法是利用了系统中提供的函数栈,非递归我们需要手动创建这么一个数据结构,但是你可能会问的是,这里为什么要用到两个栈?...使用这种方法后,递归转非递归只需要往上套就行,不需要单独分析。

    63130

    (汇总)os模块以及shutil模块对文件的操作

    ,如果没有返回none os.putenv(key, value) 设置一个环境变量值 os.listdir(path) 返回指定目录下的所有文件和目录名 os.remove(path) 函数用来删除一个文件...os.system(command) 函数用来运行shell命令 os.linesep 字符串给出当前平台使用的行终止符。...os.path.isdir()函数分别检验给出的路径是一个文件还是目录 os.path.exists() 函数用来检验给出的路径是否真地存在 os.curdir 返回当前目录 ('.') os.mkdir...(top,topdown=True,onerror=None) 遍历迭代目录 os.rename(src, dst) 重命名file或者directory src到dst 如果dst是一个存在的directory...查看路径 file_path = os.getcwd() print(file_path) # listdir() -- 查看某个路径下的所有文件 -- 返回一个列表 \test \t list1

    87750

    【算法】二叉树遍历算法总结:前序中序后序遍历

    比如剑指offer中出现的后序遍历题目,是给出一个数字序列,让你判断是不是平衡二叉树后序遍历序列,这样出题的难度比直接让你写后序遍历难很多。 但是,二叉树遍历容易吗?...,这也是为什么LeetCode会在这三题题目的下方写出进阶: 递归算法很简单,你可以通过迭代算法完成吗?这句话了。...注2:本文中的代码会尽量简单,易懂,并不会去追求极致的写法(比如:在一行内完成,使用各种非正式的库等)。 正文 二叉树的定义 最多有两棵子树的树被称为二叉树 ?...如果看到这里还没有感觉,不用担心,先直接往下看,第一个代码(前序遍历的递归思路)会帮助你提升感觉。 递归思路 递归思路是最容易理解的思路,并且前中后序遍历都相同。...我们知道,遍历二叉树时,最大的难点在于,遍历到子节点的时候怎样重新返回到父节点(假设节点中没有指向父节点的p指针),由于不能用栈作为辅助空间。(不然就是普通迭代方法)。

    1.7K20

    【算法】二叉树遍历算法总结:前序中序后序遍历

    比如剑指offer中出现的后序遍历题目,是给出一个数字序列,让你判断是不是平衡二叉树后序遍历序列,这样出题的难度比直接让你写后序遍历难很多。 但是,二叉树遍历容易吗?...,这也是为什么LeetCode会在这三题题目的下方写出进阶: 递归算法很简单,你可以通过迭代算法完成吗?这句话了。...注2:本文中的代码会尽量简单,易懂,并不会去追求极致的写法(比如:在一行内完成,使用各种非正式的库等)。...如果看到这里还没有感觉,不用担心,先直接往下看,第一个代码(前序遍历的递归思路)会帮助你提升感觉。 递归思路 递归思路是最容易理解的思路,并且前中后序遍历都相同。...我们知道,遍历二叉树时,最大的难点在于,遍历到子节点的时候怎样重新返回到父节点(假设节点中没有指向父节点的p指针),由于不能用栈作为辅助空间。(不然就是普通迭代方法)。

    1.2K40

    Python 实现反转、合并链表有啥用?

    反转链表先看在 Python 中实现反转链表,我们可以使用迭代和递归两种方法。下面分别给出这两种方法的详细实现。...= linked_list_to_list(reversed_head)print(output_list) # 输出: [5, 4, 3, 2, 1]递归方法递归方法的核心思想是先递归地反转当前节点之后的链表...= head # 将当前节点的指针置为 None head.next = None return new_head# 辅助函数:将列表转换为链表def list_to_linked_list...最后反转链表和合并链表是链表操作中的基础且重要的算法,在很多实际应用场景中都有广泛的用途,就如 V 哥文章开头介绍的应用场景,如果不懂应用场景来学链表反转、合并,即使掌握了实现原理,也只是学会了招式,而不懂为什么学...关注威哥爱编程,全栈开发就你行。

    3700

    Python入门之三元表达式列表推导式生成器表达式递归匿名函数内置函数

    Python中的递归效率低并且没有尾递归优化 #python中的递归 python中的递归效率低,需要在进入下一次递归时保留当前的状态,在其他语言中可以有解决方法:尾递归优化,即在函数的最后一步(而非最后一行...递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。...不能单独使用,通常情况下会与其他函数连用 2、匿名函数的参数规则,作用域关系与带名字函数时一样的 3、匿名函数的函数体通常应该是一个表达式,该表达式必须要有返回值 ''' 有名函数与匿名函数的对比 有名函数...globasl[,locals]]) # exec(str,[,globasl[,locals]]) #2、区别 #示例一: s='1+2+3' print(eval(s)) #eval用来执行表达式,并返回表达式执行的结果...print(exec(s)) #exec用来执行语句,不会返回任何值 ''' 6 None ''' #示例二: print(eval('1+2+x',{'x':3},{'x':30})) #返回33

    1.2K50

    LeetCode109:有序列表转二叉搜索树

    题目中描述了,所谓的二叉搜索树是一种对所有结点左右子树深度都不超过1,且左子树值都不超过根结点的值,右子树的值都不小于根结点的值。 第二、明确题目中给出的单链表是升序。...那么,我们无非需要找到单链表中的中间结点的值,然后依次递归迭代的构建出左右子树。 因此,我们重点解决的问题就是从单链表中找到中间结点。...因为是单链表结构,并不是数组结构,所以查找中间结点需要进行遍历查找才行。那么我们是不是可以将单链表结构的数据转换成数组结构呢?这样岂不是查找起来比较容易吗?...具体代码如下: # Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None...注意:由于后续需要再递归求解左右子树,我们需要将单链表从中间位置断开,这时我们需要一个pre指针来记录slow的前一个位置。

    91430

    Python办公自动化:破解WPS会员之文档拆分合并

    ,支持递归遍历文件夹中的文本文件 :param input_file: 输入的文本文件路径或文件夹路径 :param method: 拆分方法 ('fixed' 为每x行拆分,'ranges...line_ranges: 行范围的列表,例如 [(1, 100), (101, 200)](仅在 method='ranges' 时使用)若end为None,则拆分到最后一行 :param output_folder...表示拆分到最后一行 if end is None: end = total_lines...output_folder=output_folder, separate_subfolder=True) 2.4批量拆分Excel文件import os import pandas as pd # 用于将多个工作簿中的多个工作表拆分为单个工作表并保存为单独的文件...output_folder, f"{os.path.splitext(os.path.basename(file_path))[0]}_{sheet_name}.xlsx") # 保存每个工作表为单独的

    8401

    我是如何用10行代码搬运目标图片的?

    2.还有遍历目录操作 os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]]) top — 是你所要遍历的目录的地址, 返回的是一个三元组...root 所指的是当前正在遍历的这个文件夹的本身的地址 dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录) files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录...) 获取一个环境变量,如果没有返回none os.putenv(key, value) 设置一个环境变量值 os.listdir(path) 返回指定目录下的所有文件和目录名 os.remove...(path) 函数用来删除一个文件 os.system(command) 函数用来运行shell命令 os.linesep 字符串给出当前平台使用的行终止符。...() 和os.path.isdir()函数分别检验给出的路径是一个文件还是目录 os.path.exists() 函数用来检验给出的路径是否真地存在 os.curdir 返回当前目录

    1.1K20

    LeetCode 430:扁平化多级双向链表 Flatten a Multilevel Doubly Linked List

    您将获得一个双向链表,除了下一个和前一个指针之外,它还有一个子指针,可能指向单独的双向链表。这些子列表可能有一个或多个自己的子项,依此类推,生成多级数据结构,如下面的示例所示。...Flatten the list so that all the nodes appear in a single-level, doubly linked list....: 给出以下多级双向链表: [img] 我们应该返回如下所示的扁平双向链表: [cdqe0pq9tg.png] 解题思路: 这道题是典型的 DFS(深度优先搜索)型例题,并且给出了图解,只要了解过 DFS...针对这道题简单说下:深度优先搜索 就像一棵树(二叉树)的前序遍历,从某个顶点(链表头节点)出发,自顶向下遍历,然后遇到顶点的未被访问的邻接点(子节点 Child),继续进行深度优先遍历,重复上述过程(递归...和邻接点的下一个节点 3: 1---2---7---8---11---12---9---10---3---4---5---6--NULL 继续遍历,无邻接点,遍历结束,返回当前链表尾节点 6 递归结束

    50110

    LeetCode 430:扁平化多级双向链表 Flatten a Multilevel Doubly Linked List

    您将获得一个双向链表,除了下一个和前一个指针之外,它还有一个子指针,可能指向单独的双向链表。这些子列表可能有一个或多个自己的子项,依此类推,生成多级数据结构,如下面的示例所示。...: 给出以下多级双向链表: ?...img 我们应该返回如下所示的扁平双向链表: ? 解题思路: 这道题是典型的 DFS(深度优先搜索)型例题,并且给出了图解,只要了解过 DFS 的应该立即就能想到思路。...针对这道题简单说下:深度优先搜索 就像一棵树(二叉树)的前序遍历,从某个顶点(链表头节点)出发,自顶向下遍历,然后遇到顶点的未被访问的邻接点(子节点 Child),继续进行深度优先遍历,重复上述过程(递归...10 和邻接点的下一个节点 3: 1---2---7---8---11---12---9---10---3---4---5---6--NULL 继续遍历,无邻接点,遍历结束,返回当前链表尾节点 6 递归结束

    40140

    n种解法破DFS与BFS

    ], [15,7] ] 1.1 BFS非递归思路1 【思路】 采用传统的队列思路,先入先出思想,层次遍历大家都知道吧,就是一行访问完毕,再访问下一行,很有顺序,而对于二叉树BFS与层次遍历一致,那么这里就是采用...每层访问完毕,让这层的节点值list添加到结果list中,返回即可!...([]) # 访问对应level的list,并添加数据 self.result[level].append(root.val) # 左孩子递归 if root.left:...list if len(self.result) < level + 1: self.result.append([]) # 访问对应level的list,并添加数据...7 返回其自底向上的层次遍历为: [ [15,7], [9,20], [3] ] 2.1 反转思路 反转思路为将一个list直接做反转即可,实现为: list[::-1] 所以将上面的所有方法最后返回结果直接跟个

    64920
    领券