04 2022 档案
摘要:动态规划(dp) 背包问题 0-1背包 0-1背包问题是一种组合优化的 NP 完全问题:有 N 个物品和容量为 W 的背包,每个物品都有自己的体积 w 和价值 v,求拿哪些物品可以使得背包所装下物品的总价值最大。如果限定每种物品只能选择 0 个或 1 个,则问题称为 0-1 背包问题;如果不限定每种
阅读全文
摘要:栈和队列 题目详情 给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指在第 i 天之后,才会有更高的温度。如果气温在这之后都不会升高,请在该位置用 0 来代替。 示例1: 输入: temperatures = [73,74,75
阅读全文
摘要:栈和队列 题目详情 给定一个只包括'(',')','{','}','[',']'的字符串 s ,判断字符串是否有效。 有效字符串需满足: 1.左括号必须用相同类型的右括号闭合。 2.左括号必须以正确的顺序闭合。 示例1: 输入:s = "()" 输出:true 示例2: 输入:s = "()[]{}
阅读全文
摘要:栈和队列 题目详情 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。 void push(int val) 将元素val推入堆栈。 void pop() 删除堆栈顶部的元素。 int top(
阅读全文
摘要:栈和队列 题目详情 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty): 实现 MyQueue 类: void push(int x) 将元素 x 推到队列的末尾 int pop() 从队列的开头移除并返回元素 int peek() 返回队
阅读全文
摘要:数组 题目详情 给定一个长度为 n 的整数数组 arr ,它表示在 [0, n - 1] 范围内的整数的排列。 我们将 arr 分割成若干 块 (即分区),并对每个块单独排序。将它们连接起来后,使得连接的结果和按升序排序后的原数组相同。 返回数组能分成的最多块数量。 示例1: 输入: arr = [
阅读全文
摘要:数组 题目详情 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性: 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 示例1: 输入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,
阅读全文
摘要:数组 题目详情 给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例1: 输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输
阅读全文
摘要:数组 题目详情 给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字,并以数组的形式返回结果。 示例1: 输入:nums = [4,3,2,7,8,2,3,1] 输出:[5,6] 示例2: 输入
阅读全文
摘要:动态规划(dp) 子序列问题 题目详情 给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。 一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成
阅读全文
摘要:动态规划(dp) 子序列问题 题目详情 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。 示例1: 输入:nums = [
阅读全文
摘要:动态规划(dp) 题目详情 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。 注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。 示例1: 输入: s = "leetcode", wordDict = ["lee
阅读全文
摘要:动态规划(dp) 题目详情 一条包含字母 A-Z 的消息通过以下映射进行了 编码 : ‘A’ -> “1” ‘B’ -> “2” … ‘Z’ -> “26” 要 解码 已编码的消息,所有数字必须基于上述映射的方法,反向映射回字母(可能有多种方法)。例如,"11106" 可以映射为: "AAJF" ,
阅读全文
摘要:动态规划(dp) 题目详情 给你一个整数 n ,返回 和为 n 的完全平方数的最少数量 。 完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是。 示例1: 输入:n = 12 输出:3 解释:12
阅读全文
摘要:郑州轻工业大学2021-2022(2)数据结构习题集 6-10 二叉树的遍历 (25 分) 题目详情 本题要求给定二叉树的4种遍历。 函数接口定义: void InorderTraversal( BinTree BT ); void PreorderTraversal( BinTree BT );
阅读全文
摘要:动态规划(dp) 题目详情 在一个由 '0' 和 '1' 组成的二维矩阵内,找到只包含 '1' 的最大正方形,并返回其面积。 示例1: 输入:matrix = [["1","0","1","0","0"],["1","0","1","1","1"],["1","1","1","1&
阅读全文
摘要:动态规划(dp) 题目详情 给定一个由 0 和 1 组成的矩阵 mat ,请输出一个大小相同的矩阵,其中每一个格子是 mat 中对应位置元素到最近的 0 的距离。 两个相邻元素间的距离为 1 。 示例1: 输入:mat = [[0,0,0],[0,1,0],[0,0,0]] 输出:[[0,0,0],
阅读全文
摘要:动态规划(dp) 题目详情 给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 说明:每次只能向下或者向右移动一步。 示例1: 输入:grid = [[1,3,1],[1,5,1],[4,2,1]] 输出:7 解释:因为路径 1→3→
阅读全文
摘要:广度优先搜索(bfs) 题目详情 树是一个无向图,其中任何两个顶点只通过一条路径连接。 换句话说,一个任何没有简单环路的连通图都是一棵树。 给你一棵包含 n 个节点的树,标记为 0 到 n - 1。给定数字 n 和一个有 n - 1 条无向边的 edges 列表(每一个边都是一对标签),其中 edg
阅读全文
摘要:郑州轻工业大学2021-2022(2)数据结构习题集 6-9 学生成绩链表处理 (20 分) 题目详情 本题要求实现两个函数,一个将输入的学生成绩组织成单向链表;另一个将成绩低于某分数线的学生结点从链表中删除。 函数接口定义: struct stud_node *createlist(); stru
阅读全文
摘要:郑州轻工业大学2021-2022(2)数据结构习题集 6-8 两个有序链表序列的合并 (15 分) 题目详情 本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列。 函数接口定义: List Merge( List L1, List L2 ); 其中List结构定义如下: t
阅读全文
摘要:动态规划(dp) 题目详情 如果一个数列 至少有三个元素 ,并且任意两个相邻元素之差相同,则称该数列为等差数列。 例如,[1,3,5,7,9]、[7,7,7,7] 和 [3,-1,-5,-9]都是等差数列。 给你一个整数数组 nums ,返回数组 nums 中所有为等差数组的 子数组 个数。 子数组
阅读全文
摘要:动态规划(dp) 题目详情 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内
阅读全文
摘要:深度优先搜索(dfs) 回溯法 题目详情 编写一个程序,通过填充空格来解决数独问题。 数独的解法需 遵循如下规则: 1.数字 1-9 在每一行只能出现一次。 2.数字 1-9 在每一列只能出现一次。 3.数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图) 数独部分空格内
阅读全文
摘要:郑州轻工业大学2021-2022(2)数据结构习题集 6-7 求链表的倒数第m个元素 (20 分) 题目详情 请设计时间和空间上都尽可能高效的算法,在不改变链表的前提下,求链式存储的线性表的倒数第m(>0)个元素。 函数接口定义: ElementType Find( List L, int m );
阅读全文
摘要:郑州轻工业大学2021-2022(2)数据结构习题集 6-6 逆序数据建立链表 (20 分) 题目详情 本题要求实现一个函数,按输入数据的逆序建立一个链表。 函数createlist利用scanf从输入中获取一系列正整数,当读到−1时表示输入结束。按输入数据的逆序建立一个链表,并返回链表头指针。链表
阅读全文
摘要:郑州轻工业大学2021-2022(2)数据结构习题集 6-5 删除单链表偶数节点 (20 分) 题目详情 本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中偶数值的结点删除。链表结点定义如下: struct ListNode { int data; struct ListNode *nex
阅读全文
摘要:动态规划(dp) 题目详情 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例1: 输入:n = 2 输出:2 解释:有两种方法可以爬到楼顶。 1. 1 阶 + 1 阶 2. 2 阶 示例2: 输入:n = 3 输出:3 解释
阅读全文
摘要:深度优先搜索(dfs) 回溯法 题目详情 给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。 示例1: 输入:nums = [1,1,2] 输出: [[1,1,2], [1,2,1], [2,1,1]] 示例2: 输入:nums = [1,2,3] 输出:[[1,2,3]
阅读全文
摘要:深度优先搜索(dfs) 回溯法 题目详情 给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用 一次 。 注意:解集不能包含重复的组合。 示例1:
阅读全文
摘要:深度优先搜索(dfs) 回溯法 题目详情 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同
阅读全文
摘要:深度优先搜索(dfs) 回溯法 题目详情 给你一个二叉树的根节点root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。 叶子节点 是指没有子节点的节点。 示例1: 输入:root = [1,2,3,null,5] 输出:["1->2->5","1->3"] 示例2: 输入:root = [1
阅读全文
摘要:深度优先搜索(dfs) 题目详情 给你一个 m x n 的矩阵 board ,由若干字符 'X' 和 'O' ,找到所有被'X'围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充。 示例1: 输入:board = [["X","X","X","X"],["X","O","O","X"],["
阅读全文
摘要:深度优先搜索(dfs) 广度优先搜索(bfs) 回溯法 题目详情 按字典 wordList 完成从单词 beginWord 到单词 endWord 转化,一个表示此过程的 转换序列 是形式上像 beginWord -> s1 -> s2 -> ... -> sk 这样的单词序列,并满足: 1.每对相
阅读全文
摘要:深度优先搜索(dfs) 广度优先搜索(bfs) 题目详情 在给定的二维二进制数组 A 中,存在两座岛。(岛是由四面相连的 1 形成的一个最大组。) 现在,我们可以将 0 变为 1,以使两座岛连接起来,变成一座岛。 返回必须翻转的 0 的最小数目。(可以保证答案至少是 1 。) 题意理解:示例一: 填
阅读全文
摘要:双指针法 题目详情 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。 示例1: 输入:nums = [-4,-1,0,3,10] 输出:[0,1,9,16,100] 解释:平方后,数组变为 [16,1,0,9,100] 排序后,数组变
阅读全文
摘要:深度优先搜索(dfs) 回溯算法 题目详情 n 皇后问题 研究的是如何将 n 个皇后放置在n×n的棋盘上,并且使皇后彼此之间不能相互攻击。 给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。 每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中'Q' 和 '.'分别代表了皇后
阅读全文
摘要:深度优先搜索(dfs) 回溯算法 题目详情 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格
阅读全文
摘要:深度优先搜索(dfs) 回溯算法 题目详情 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例1: 输入:n = 4, k = 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ]
阅读全文
摘要:深度优先搜索(dfs) 回溯算法 题目详情 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例1: 输入:nums = [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 示例
阅读全文
摘要:深度优先搜索(dfs) 题目详情 有一个 m × n 的矩形岛屿,与 太平洋 和 大西洋 相邻。 “太平洋” 处于大陆的左边界和上边界,而 “大西洋” 处于大陆的右边界和下边界。 这个岛被分割成一个由若干方形单元格组成的网格。给定一个 m x n 的整数矩阵 heights , heights[r]
阅读全文
摘要:深度优先搜索(dfs) 题目详情 有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。 省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市。 给你一个 n x n 的矩阵 isConne
阅读全文
摘要:深度优先搜索(dfs) 题目详情 给你一个大小为m x n的二进制矩阵 grid 。 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在 水平或者竖直的四个方向上 相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。 岛屿的面积是岛上值为 1 的单元格
阅读全文
摘要:双指针法 题目详情 请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 示例1: 输入:s = "We are happy." 输出:"We%20are%20happy."``` 我的代码: class Solution { public: string replaceSpace(stri
阅读全文
摘要:题目详情 给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 必须在不使用库的sort函数的情况下解决这个问题。 示例1: 输入:nums = [2,
阅读全文
摘要:桶排序 题目详情 给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。 示例1: 输入: nums = [1,1,1,2,2,3], k = 2 输出: [1,2] 示例2: 输入: nums = [1], k = 1 输出: [1] 我
阅读全文
摘要:快速选择 题目详情 给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 示例1: 输入: [3,2,1,5,6,4] 和 k = 2 输出: 5 示例2: 输入: [3,2,3,1,2,4,5,5
阅读全文