自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 收藏
  • 关注

原创 Singular Value Decomposition

奇异值分解(Singular Value Decomposition)对称矩阵的对角化​ 定理:设 AAA 为 nnn 阶对称矩阵,则必有正交矩阵 PPP,使 P−1AP=PTAP=ΛP^{-1}AP=P^TAP=\varLambdaP−1AP=PTAP=Λ(也可写作 A=PΛPTA=P\varLambda P^TA=PΛPT),其中 Λ\varLambdaΛ 是以 AAA 的 nnn 个特征值为对角元的对角矩阵。由 PTAP=ΛP^TAP=\varLambdaPTAP=Λ 得 AP=PΛAP=P\

2021-05-14 16:20:03 436

原创 Positive Semidefinite Matrix

半正定矩阵(Positive Semidefinite Matrix)半正定二次型​ 定义:设二次型 xTAx\boldsymbol{x^T}A\boldsymbol{x}xTAx,若对任意 x≠0\boldsymbol{x} \neq \boldsymbol{0}x​=0,都有 f(x)⩾0f(\boldsymbol{x})\geqslant0f(x)⩾0,则称 fff 为半正定二次型。半正定矩阵​ 定义:设实对称矩阵 AAA,若对任意 x≠0\boldsymbol{x} \neq \bol

2021-05-14 16:18:03 2020

原创 Convariance Matrix

协方差矩阵(Covariance Matrix)协方差​ 定义:设 XXX 和 YYY 为两个随机变量,XXX 与 YYY 的协方差Cov[X,Y]=σXY=E[(X−E[X])(Y−E[Y])]=E[XY]−E[X]E[Y]Cov[X,Y]=\sigma_{XY}=E[(X-E[X])(Y-E[Y])]=E[XY]-E[X]E[Y]Cov[X,Y]=σXY​=E[(X−E[X])(Y−E[Y])]=E[XY]−E[X]E[Y]协方差矩阵​ 定义:设 nnn 维随机变量 (X1,X2,..

2021-05-14 16:16:35 343

原创 08_Analytic Hierarchy Process

层次分析法(Analytic Hierarchy Process)层次分析法建模步骤:①建立递阶层次结构模型②构造出各层次中的所有判断矩阵③层次单排序及一致性检验④层次总排序及一致性检验1 建立递阶层次结构模型将决策的目标、考虑的因素(决策准则)和决策对象按他们之间的相互关系分成最高层、中间层和最低层最高层:只有一个元素,是决策目标中间层(准则层):包含了为实现目标所涉及的中间环节,它可以由若干个层次组成,包括所需考虑的因素、决策的准则,因此也称为准则层最低层(措施层、方案层):包

2021-03-28 23:35:49 754

翻译 【LeetCode】P222 完全二叉树的节点个数

P222 完全二叉树的节点个数文章目录P222 完全二叉树的节点个数题目描述题解方法一:DFS方法二:BFS方法三:二分查找 + 位运算题目链接:[222. 完全二叉树的节点个数](https://leetcode-cn.com/problems/count-complete-tree-nodes/).题目描述给出一个完全二叉树,求出该树的节点个数。说明:完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置

2021-01-10 21:20:05 83

原创 【LeetCode】P95 不同的二叉搜索树 II(未完结)

P95 不同的二叉搜索树 II文章目录P95 不同的二叉搜索树 II题目描述题解方法一:递归题目链接:95. 不同的二叉搜索树 II.题目描述给定一个整数 n,生成所有由 1 … n 为节点所组成的二叉搜索树 。示例:输入:3输出:[[1,null,3,2],[3,2,null,1],[3,1,null,null,2],[2,1,3],[1,null,2,null,3]]解释:以上的输出对应以下 5 种不同结构的二叉搜索树:二叉树结点的定义:struct TreeN

2020-09-22 13:14:53 133

原创 【百练】P4151 电影节

P4151 电影节文章目录P4151 电影节题目描述题解方法一:贪心算法题目链接:4151:电影节.题目描述总时间限制: 1000ms 内存限制: 65536kB描述大学生电影节在北大举办! 这天,在北大各地放了多部电影,给定每部电影的放映时间区间,区间重叠的电影不可能同时看(端点可以重合),问李雷最多可以看多少部电影。输入多组数据。每组数据开头是n(n<=100),表示共n场电影。接下来n行,每行两个整数(0到1000之间),表示一场电影的放映区间n=0则数据结束输出对每组数

2020-09-06 11:47:05 291

原创 【LeetCode】P32 最长有效括号(未完结)

P32 最长有效括号文章目录P32 最长有效括号题目描述题解方法一:动态规划方法二:栈题目链接:32. 最长有效括号.题目描述给定一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长的包含有效括号的子串的长度。示例:输入: “(()”输出: 2解释: 最长有效括号子串为 “()”输入: “)()())”输出: 4解释: 最长有效括号子串为 “()()”题解方法一:动态规划思路①将原问题分解为子问题子问题:“求以下标为 iii 的字符结尾的最长有效括号子串的长度”。定

2020-09-05 17:44:19 75

原创 【LeetCode】P70 爬楼梯

P70 爬楼梯文章目录P70 爬楼梯题目描述题解方法一:递归方法二:记忆型递归方法三:动态规划方法四:通项公式的矩阵形式 + 矩阵快速幂方法五:直接返回结果题目链接:70. 爬楼梯.题目描述假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意: 给定 n 是一个正整数。示例:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1

2020-09-01 14:48:10 110

原创 矩阵快速幂

矩阵快速幂文章目录矩阵快速幂

2020-09-01 11:48:14 140

原创 【LeetCode】P1143 最长公共子序列(LCS)

P1143 最长公共子序列文章目录P1143 最长公共子序列题目描述题解方法一:动态规划题目链接:1143. 最长公共子序列.题目描述给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列的长度。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列。两个字符串的「公共子序列」是这两个字符串所

2020-08-25 23:53:08 216

原创 【LeetCode】P300 最长上升子序列(未完结)

P11 最长上升子序列文章目录P11 最长上升子序列题目描述题解方法一:动态规划题目链接:300. 最长上升子序列.题目描述给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。你算法的时间复杂度应该为 O(n2)O(n^2)O(n2) 。进阶: 你能将算法的时间复杂度降低到

2020-08-25 14:51:41 117 1

翻译 动态规划

动态规划文章目录动态规划动态规划解题的一般思路1.将原问题分解为子问题2.确定状态3.确定一些边界状态(初始状态)的值4.确定状态转移方程递归到到动态规划的一般转化方法递归函数有 n 个参数,就定义一个 n 维的数组,数组的下标是递归函数参数的取值范围,数组元素的值是递归函数的返回值,这样就可以从边界值(在动态规划中成为“边界状态”)开始,逐步填充数组,相当于计算递归函数值的逆过程。动态规划解题的一般思路1.将原问题分解为子问题把原问题分解为若干个子问题,子问题和原问题形式相同或类似,只不过

2020-08-23 12:56:15 127

原创 【LeetCode】P11 盛最多水的容器

P11 盛最多水的容器文章目录P11 盛最多水的容器题目描述题解方法一:双指针题目链接:11. 盛最多水的容器.题目描述给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳

2020-08-21 14:33:18 115

原创 【LeetCode】P10 正则表达式匹配

P10 正则表达式匹配文章目录P10 正则表达式匹配题目描述题解方法一:动态规划题目链接:10. 正则表达式匹配.题目描述给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ’ . ’ 和 ’ * ’ 的正则表达式匹配。’ . ’ 匹配任意单个字符’ * ’ 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖整个字符串 s 的,而不是部分字符串。说明s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *。示例:

2020-08-21 10:32:59 165

原创 【LeetCode】P9 回文数

P9 回文数文章目录P9 回文数题目描述题解方法一:整数转化为字符串方法二:反转一半数字题目链接:9. 回文数.题目描述判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例:输入: 121输出: true输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。进阶:你能不将整

2020-08-20 14:23:47 160

原创 【LeetCode】P8 字符串转换整数 (atoi)(未完结)

P8 字符串转换整数 (atoi)文章目录P8 字符串转换整数 (atoi)题目描述题解方法一:方法二:自动机题目链接:8. 字符串转换整数 (atoi).题目描述请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形

2020-08-19 09:24:21 89

原创 【LeetCode】P7 整数反转

P7 整数反转文章目录P7 整数反转题目描述题解题目链接:7. 整数反转.题目描述给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例:输入: 123输出: 321输入: -123输出: -321输入: 120输出: 21假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231,231−1][−2^{31}, 2^{31}−1][−231,231−1]。请根据这个假设,如果反转后整数溢出那么就返回 0。题解思路将 32

2020-08-18 20:24:01 91

原创 【LeetCode】P6 Z 字形变换

P6 Z 字形变换文章目录P6 Z 字形变换题目描述题解方法一:逐行访问方法二:逐行组合题目链接:6. Z 字形变换.题目描述将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下:之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。请你实现这个将字符串进行指定行数变换的函数:string convert(string s, int numR

2020-08-18 00:04:19 155

原创 【LeetCode】P5 最长回文子串(未完结)

P5 最长回文子串文章目录P5 最长回文子串题目描述题解方法一:暴力算法方法二:中心扩散法方法三:动态规划题目链接:5. 最长回文子串.题目描述给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。输入: “cbbd”输出: “bb”题解方法一:暴力算法思路枚举出所有长度大于 1 的子串,逐个检验它们是否为回文子串,并找到最长回文子串。算法class

2020-08-16 15:22:28 93

原创 【LeetCode】P4 寻找两个正序数组的中位数

P4 寻找两个正序数组的中位数文章目录P4 寻找两个正序数组的中位数题目描述题解方法一:二分查找(中位数分割线)题目链接:4. 寻找两个正序数组的中位数.题目描述给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出这两个正序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例:nums1 = [1, 3]nums2 = [2]则中位数是 2.0nums1 = [1, 2

2020-08-14 22:34:32 270 3

原创 【LeetCode】P3 无重复字符的最长子串

P3 无重复字符的最长子串文章目录P3 无重复字符的最长子串题目描述题解方法一:暴力算法方法二:滑动窗口(双指针)方法三:滑动窗口(hashset)题目链接:3. 无重复字符的最长子串.题目描述给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。输入: “pwwk

2020-08-12 23:43:09 89

原创 【LeetCode】P2 两数相加

P2 两数相加文章目录P2 两数相加题目描述题解题目链接:2. 两数相加.题目描述给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 +

2020-08-12 11:12:05 100

翻译 Java初始化块

Java初始化块文章目录Java初始化块一、初始化块的调用时机1二、初始化块的调用时机2三、静态初始化块与普通初始化块的调用优先级四、显式字段初始化、构造器、初始化块的调用优先级五、六、静态初始化块中不可访问非静态字段转载:https://blog.csdn.net/china_songlei/article/details/79696583.原作者总结的很好,我只是将原作者的工作重复做了一遍,加深记忆…在Java中,初始化数据字段的方法有三种:显式字段初始化构造器初始化块初始化块分

2020-08-01 17:09:42 117

原创 驼峰命名法(Camel-Case)

驼峰命名法(Camel-Case)文章目录驼峰命名法(Camel-Case)一、小驼峰法二、大驼峰法(帕斯卡命名法)三、我的命名风格(Java语言)骆驼式命名法(Camel-Case)又称驼峰式命名法,是电脑程式编写时的一套命名规则(惯例)。正如它的名称CamelCase所表示的那样,是指混合使用大小写字母来构成变量和函数的名字。程序员们为了自己的代码能更容易的在同行之间交流,所以多采取统一的可读性比较好的命名方式。驼峰命名法法近年来越来越流行了,在许多新的函数库和Microsoft Windows这

2020-07-14 15:17:41 7054

原创 Java程序的编译与运行

Java程序的编译与运行文章目录Java程序的编译与运行一、编译阶段1.编译过程①方式一(使用绝对路径)②方式二(使用相对路径)二、运行阶段1.运行过程一、编译阶段在".java"文件中编写完符合Java语法的源代码之后,即可进行编译。必须安装:JDK(Java Development Kit),是 Java 语言的软件开发工具包)才能对Java源程序进行编译。下载链接:jdk-14.0.1.安装之后还要设置环境变量Path,才能直接在DOS中打开javac.exe,java.exe。参考博客

2020-07-09 21:57:23 356

原创 Java的可移植性/跨平台性

Java语言的可移植性/跨平台性文章目录Java语言的可移植性/跨平台性一、什么是可移植性?二、Java语言的可移植性是如何实现的?一、什么是可移植性?Java程序可以做到一次编译,到处运行。可移植性也被叫做跨平台性例如:Java程序可以在Windows操作系统上运行,在不做任何修改的情况下,可以在Linux操作系统下运行。二、Java语言的可移植性是如何实现的?首先,不同操作系统的内核是不一样的,那么不同操作系统执行指令的方式也是不一样的,直接让Java程序与底层的操作系统直接交互是肯定不行的

2020-07-07 22:28:20 3809

原创 数据库系统概论——最小依赖集

数据库系统概论——最小依赖集文章目录数据库系统概论——最小依赖集1.求F={A->B,B->A,B->C,A->C,C->A}的最小依赖集(从左到右的顺序)2.求F={A->BC,ABD->CE,E->D}的最小依赖集(从左到右的顺序)3.参考文献1.求F={A->B,B->A,B->C,A->C,C->A}的最小依赖集(从左到右的顺序)(1)在F中找到右部为不止一个属性的函数依赖,将其取代为//例:A->BC应该被

2020-05-20 22:09:19 3605 1

原创 计算机体系结构——名词解释

计算机体系结构——名词解释文章目录计算机体系结构——名词解释一、第一章1.计算机系统结构,计算机组成,计算机实现2.计算机系统结构分类法①Flynn分类法②冯氏分类法③Handler分类法3.定量分析技术①Amdahl定律②CPU性能公式③程序的局部性原理一、第一章1.计算机系统结构,计算机组成,计算机实现计算机系统结构:经典定义:传统机器程序员所看到的计算机属性,即概念性结构与功能特...

2020-05-05 16:30:24 3317 1

原创 iterator_traits

iterator_traits文章目录iterator_traits一、iterator_traits是什么二、STL中算法与迭代器的关系三、iterator_traits在算法中充当的角色==**提问:**====**解答:**==四、自定义一个iterator_traits一、iterator_traits是什么我们先用一句话来概括iterator_traits:是一个特性类,用来定义迭...

2020-04-06 15:46:12 1423 1

原创 模板的偏特化

模板的偏特化文章目录模板的偏特化一、简介二、两种偏特化1.个数上的偏特化2.范围上的偏特化3.例子一、简介偏特化,顾名思义,就是将模板局部的特化,二、两种偏特化1.个数上的偏特化个数上的偏特化:将部分模板参数特化,而仍然保留某些模板参数2.范围上的偏特化范围上的偏特化:(不好解释,见例子)3.例子看了例子就懂了,上面的不重要。在这里插入代码片...

2020-03-21 19:25:23 677

原创 Matlab——常用函数的用法总结(部分直接摘自mathwork,持续更新)

Matlab——常用函数的用法总结(部分直接摘自mathwork,持续更新)文章目录Matlab——常用函数的用法总结(部分直接摘自mathwork,持续更新)一、绘图篇1.图象显示形式①figure(创建图窗窗口)②subplot(多个子图画在同一个图窗中)2.频数图与直方图①hist(不推荐hist,推荐使用histogram)②histogram二、数据处理篇1.查找①find三、数理统计...

2020-03-17 23:12:19 2260

翻译 Matlab(14)——函数

Matlab(14)——函数文章目录Matlab(14)——函数一、函数文件的基本结构二、函数的调用三、匿名函数1.给函数表达式定义函数句柄2.给已定义的函数定义函数句柄四、函数参数的可调(tiao)性五、局部变量、全局变量与静态变量1.局部变量2.全局变量3.静态变量一、函数文件的基本结构function [输出形参表]=函数名(输入形参表)%注释函数体end——当输出形参数量为1...

2020-03-15 22:51:13 313

翻译 Matlab(13)——程序文件与语句控制结构

Matlab(13)——程序文件与结构文章目录Matlab(13)——程序文件与结构一、脚本文件与函数文件二、文件的建立1.主页—>新建脚本2.edit命令创建文件三、顺序结构1.输入与输出2.程序的暂停四、分支结构1.if 语句2.switch语句五、循环结构1.for 语句一、脚本文件与函数文件脚本文件:可以在命令行窗口直接执行的文件(直接写出文件名即可执行),也叫命令文件函数文...

2020-03-15 21:18:32 226

翻译 Matlab(12)——稀疏矩阵

Matlab(12)——稀疏矩阵文章目录Matlab(12)——稀疏矩阵一、矩阵的存储方式1.完全存储方式2.稀疏存储方式二、稀疏存储方式的产生1.矩阵的完全存储方式与稀疏存储方式的转换2.直接建立稀疏存储方式的矩阵①sparse函数②spconvert函数3.带状稀疏矩阵的稀疏存储方式①从带状稀疏矩阵中提取对角线上元素②创建带状稀疏矩阵4.单位矩阵的稀疏存储方式一、矩阵的存储方式1.完全存...

2020-03-14 23:38:11 1373

翻译 Matlab(11)——矩阵的特征值与特征向量

Matlab(11)——矩阵的特征值与特征向量文章目录Matlab(11)——矩阵的特征值与特征向量一、求矩阵的特征值与特征向量一、求矩阵的特征值与特征向量eig(A):返回一个列向量,其中包含方阵 A 的特征值[X,D] =eig(A):求矩阵A的全部特征值,构成对角阵D,并产生矩阵X,X各列是对应的特征向量...

2020-03-14 19:54:56 1389

原创 右值引用

右值引用文章目录右值引用一、用途二、使用三、move函数四、右值引用与auto一、用途有时候我们希望操控一个右值对象,尤其是在编译时产生的临时对象,但是它们的生命期可能是十分短暂的,这时我们就可以使用右值引用来获取这些即将消亡的右值对象的资源,变相地使其生命期得到延长。简单地说,右值引用对象就是一个左值,使用右值引用就是把一个生命期短的无名右值命个名,使其变成生命期长的有名左值。二、使用...

2020-03-14 14:56:01 126

翻译 Matlab(10)——矩阵求值

Matlab(10)——矩阵求值文章目录Matlab(10)——矩阵求值一、方阵的行列式的值二、矩阵的迹三、矩阵的秩四、矩阵的范数五、矩阵的条件数一、方阵的行列式的值det(A):求方阵A的行列式的值二、矩阵的迹三、矩阵的秩rank(A):求矩阵A的秩例:bar(y):创建一个条形图,y 中的每个元素对应一个条形,横坐标为元素的序号。如果 y 是矩阵,则 bar 根据 ...

2020-03-12 23:52:25 1559

翻译 Matlab(9)——矩阵变换

Matlab(9)——矩阵变换文章目录Matlab(9)——矩阵变换一、对角阵1.提取矩阵对角线上的元素2.构造对角矩阵3.应用二、三角阵1.上三角矩阵2.下三角矩阵三、矩阵的转置四、矩阵的旋转五、矩阵的翻转六、矩阵的逆矩阵一、对角阵1.提取矩阵对角线上的元素diag(A):提取矩阵A对角线上的元素,形成一个列向量diag(A,k): 提取A 的第 k 条对角线上元素的列向量。k=0 ...

2020-03-12 21:27:39 841

翻译 Matlab(8)——特殊矩阵

Matlab(8)——特殊矩阵文章目录Matlab(8)——特殊矩阵一、通用的特殊矩阵1.zeros函数2.ones函数3.eye函数4.rand函数5.randn函数二、用于专门学科的特殊矩阵1.魔方矩阵(幻方矩阵)2.范德蒙德矩阵3.希尔伯特矩阵4.伴随矩阵5.帕斯卡矩阵一、通用的特殊矩阵1.zeros函数产生所有元素都是0的矩阵zeros(n):元素都是0的n阶方阵zeros(n...

2020-03-11 22:50:14 782

空空如也

空空如也

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

TA关注的人

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