随笔分类 - 算法与数据结构
摘要:问题: # 给定一个非空字符串 s 和一个包含非空单词的列表 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。 # # 说明: # # # 拆分时可以重复使用字典中的单词。 # 你可以假设字典中没有重复的单词。 # def wordBreak(s, wordDict):
阅读全文
摘要:nlp工程师如何提升工程能力? 如何培养属于自己一套完整的NLP方法论? 对业务场景、用户动机、数据特性要理解透彻,才能做出最适合的模型结构。
阅读全文
摘要:问题: # 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 # # 说明: # # 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? # # 示例 1: # # 输入: [2,2,1]# 输出: 1 方法:不需要额外空间实现,就
阅读全文
摘要:问题: # 给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。 # # 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 解决:遍历每一个数,若是从起点开始数是复合要求,就遍历下一个,之后维护最大值 # leetcode submit reg
阅读全文
摘要:方法: dfs,递归 def maxPathSum(root): max_sum = -float("inf") # 存放全局最大值 def dfs(root): nonlocal max_sum # 可修改上层函数变量 if not root: return 0 l = dfs(root.left
阅读全文
摘要:问题: # 给你二叉树的根结点 root ,请你将它展开为一个单链表: # # # 展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。 # 展开后的单链表应该与二叉树 先序遍历 顺序相同。 # # # # # 示例 1: #
阅读全文
摘要:思路: 1、由二叉树的前(先)序序列和中序序列建立该二叉树 分析:若二叉树的任意两个结点的值都不相同,则二叉树的前序序列和中序序列能唯一确定一棵二叉树。另外,由前序序列和中序序列的定义可知,前序序列中第一个结点必为根结点,而在中序序列中,根结点刚好是左、右子树的分界点,因此,可按如下方法建立二叉树:
阅读全文
摘要:问题: # 给定一个二叉树,找出其最大深度。 # # 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 # # 说明: 叶子节点是指没有子节点的节点。 方法:迭代 def maxDepth(root): """ 在栈的帮助下将递归转换为迭代 :param root: :return: """
阅读全文
摘要:问题: # 给定一个二叉树,判断其是否是一个有效的二叉搜索树。 # # 假设一个二叉搜索树具有如下特征: # # # 节点的左子树只包含小于当前节点的数。 # 节点的右子树只包含大于当前节点的数。 # 所有左子树和右子树自身必须也是二叉搜索树。 方法:二叉搜索树的中序遍历是排序好的 # 是否是升序,
阅读全文
摘要:题目: # 给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?# 返回满足题意的二叉搜索树的种数。 方法:动态规划 # leetcode submit region begin(Prohibit modification and deletion)
阅读全文
摘要:地址:https://zhuanlan.zhihu.com/p/388681117 动态规划 【LeetCode 55】跳跃游戏 【LeetCode 72】编辑距离 【LeetCode 115】不同的子序列 【LeetCode 124】二叉树中的最大路径和 【LeetCode 174】地下城游戏 【
阅读全文
摘要:# 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 # # 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重
阅读全文
摘要:# 给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,# 并按照红色、白色、蓝色顺序排列。# # 此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 # # # # # # # 示例 1: # # # 输入:nums = [2,0,2,
阅读全文
摘要:# 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返# 回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。 # # # # 示例 1: # # # 输入:intervals = [[1
阅读全文
摘要:# 给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。 # # 数组中的每个元素代表你在该位置可以跳跃的最大长度。 # # 判断你是否能够到达最后一个下标。 # # # # 示例 1: # # # 输入:nums = [2,3,1,1,4]# 输出:true# 解释:可以先跳 1 步
阅读全文
摘要:将图像(矩阵)顺时针旋转90度 方法:数组操作 def rotate(matrix): m = len(matrix[0]) for i in range(m//2): # 处理折半行,行思维 for j in range(i, m-1-i): # 列数是总长度少1,但大于等于行数, 顺时针互换i、
阅读全文
摘要:# 翻转一棵二叉树。 # # 示例: # # 输入: # # 4# / \# 2 7# / \ / \# 1 3 6 9 # # 输出: # # 4# / \# 7 2# / \ / \# 9 6 3 1 方法:递归,子树处理 # leetcode submit region begin(Prohi
阅读全文
摘要:# 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 # # candidates 中的数字可以无限制重复被选取。 # # 说明: # # # 所有数字(包括 target)都是正整数。 # 解集不
阅读全文
摘要:# 给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。 # # 如果数组中不存在目标值 target,返回 [-1, -1]。 # # 进阶: # # # 你可以设计并实现时间复杂度为 O(log n) 的算法解决此问题吗? # # #
阅读全文
摘要:# 实现获取 下一个排列 的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。 # # 如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。 # # 必须 原地 修改,只允许使用额外常数空间。 # # # # 示例 1: # # # 输入:nums = [1,2,3
阅读全文