自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JS正则表达式位置匹配

正则表达式位置匹配正则表达式是匹配模式,要么匹配字符,要么匹配位置。位置位置(锚)是相邻字符之间的位置。比如,下图中箭头所指的地方:匹配位置ES5中,共有6个锚:^,$,\b,\B,(?=p),(?!p)。位置可以替换成字符的脱字符^ 和 美元符$^ 匹配开头,在多行匹配中匹配行开头。$ 匹配结尾,在多行匹配中匹配行结尾。单行匹配模式//将hello中的^或者$位置替换为#var result = "hello".replace(/^|$/g, '#');console.log(

2020-06-26 09:10:23 1342

原创 JS的NaN和isNaN()

NaN(Not a Number)1.任何数值除以0会返回NaN2.任何涉及NaN的操作都会返回NaN,尽量不要多步计算3.NaN与任何值都不相等,包括NaN本身alert(NaN == NaN); //返回falseisNaN()函数1.接收一个参数,可以是任何类型,会帮我们确定这个参数是否“不是数值”。2.在接收到一个值之后,会尝试将这个值转换为数值。3.字符串"10"或者Boolean值都可以被转换为数值。console.log(isNaN(NaN)); //true,NaN本身不

2020-06-24 10:13:56 261

原创 bfs解决hdu1242Rescue

Rescue题目链接题目描述具体请点击上方题目链接。题目大概意思就是给定一个n和m,然后给定一个由"#", “.” , “a” , “x” , “r” 构成的矩阵。然后要求从r到a的所需的最短的时间。解题思路需要注意的是"#“表示墙壁,不可通过,”."表示可通过,"a"表示要到达的目的地,"x"表示警官的位置,必须先耗费一定时间将将官杀掉,然后才能通过,“r"表示朋友所在位置,即开始的位置,但是题目中说"r” stands for each of Angel’s friend,说明可能会有好几个朋

2020-06-20 09:22:59 207

原创 bfs解决洛谷P1443 马的遍历

马的遍历题目链接题目描述有一个n*m的棋盘(1<n,m<=400),在某个点上有一个马,要求你计算出马到达棋盘上任意一个点最少要走几步。输入格式一行四个数据,棋盘的大小和马的坐标输出格式一个n*m的矩阵,代表马到达某个点最少要走几步(左对齐,宽5格,不能到达则输出-1)样例输入3 3 1 1样例输出0 3 23 -1 12 1 4解题思路首先要知道的是马走"日"字,如图,可以从中心圆的位置到达五角星的位置。那我们就可以遍历八个方

2020-06-19 15:13:03 262

原创 bfs解决poj 2312 battle city(优先队列)

Battle City题目链接题目描述简单描述一下,细节点击题目链接进行查看。给定m,n,然后给定m*n的矩阵,矩阵元素由 ‘Y’ (you), ‘T’ (target), ‘S’ (steel wall), ‘B’ (brick wall), ‘R’ (river) and ‘E’ (empty space)中的几个元素组成,并且’Y’和’T’只出现一次,现要求从Y尽快走到T。其中B表示的位置必须要射击一次,再走一步才算到达,E表示的位置可走一步直接到达,S和R表示的位置不可通过。解题思路要

2020-06-19 11:16:36 280

原创 粉刷匠的难题

粉刷匠的难题题目描述粉刷匠遇到了一个难题:有n根柱子排成一条直线,需要给柱子涂上颜色,现在共有k种颜色,每根柱子涂不同颜色的费用不同。并且要求相邻柱子颜色不同。你能帮他计算最小的支出费用吗?费用通过一个n*k 的矩阵给出,比如cost[0][0]表示柱子0涂颜色0的费用,cost[1][2]表示柱子1涂颜色2的费用。测试输入:3 314 2 1111 14 514 3 10预期输出:10解题思路这个题很明显是从每一行的数中选择一个使得加和最小。而且相邻的行不能选择同一个列。可以用df

2020-06-11 18:42:19 1046 1

原创 dfs解决自然数拆分

自然数拆分题目描述给定一个自然数N,要求把N拆分成若干个正整数相加的形式,参与加法运算的数可以重复。N<=30。输入格式一个整数n。输出格式输出一个数,即所有方案数样例输入:7样例输出:14解题思路因为N比较小,所以我用的是一种比较耗时的简单的思路,dfs解决。首先,思路很简单,比如7,可以分成1+6,那么我们考虑到接下来的问题就是考虑把6怎么分。所以很明显递归dfs是可以解决的,递归的变量就是分完之后剩下的数x,然后递归过程就是在小于等于x的数中,选择一个数进行下一步的递归

2020-06-10 15:54:15 426

原创 leetcode343整数拆分(和固定乘积最大)

整数拆分题目连接题目描述给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。示例 1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1。示例 2:输入: 10输出: 36解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。说明: 你可以假设 n 不小于 2 且不大于 58。解题思路按照我们的之前的知识,应该是分的越均匀越好。而且尽量不要出现1,因为1会占用和,但是不会增大积。代码如下c

2020-06-08 16:31:25 751

原创 JS正则表达式字符匹配

正则表达式字符匹配这是阅读《JavaScript正则表达式迷你书》后整理的一些笔记。正则表达式是匹配模式,可以匹配字符,可以匹配位置。下面主要介绍匹配字符的情况,匹配位置的情况我也正在学习中。两种模糊匹配:1.横向模糊匹配:一个正则可匹配的字符串的长度不是固定的。其实现方式是使用量词。比如说{m,n}是指字符最少连续出现m次,最多n次。如/ab{2,5}c/ 表示匹配这样一个字符串:第一个字符是 “a”,接下来是 2 到 5 个字符 “b”,最后是字符 “c”。例如:(大家可以手动试一下,想想

2020-06-08 14:31:53 10903 2

原创 n阶乘中尾部零的个数

n阶乘中尾部零的个数题目描述给出数字n(0<n<1000000),计算出n阶乘尾部零的个数。样例 1:测试输入: 11预期输出: 2样例解释:11! = 39916800,结尾的0有2个。样例 2:测试输入: 5预期输出: 1样例解释:5! = 120, 结尾的0有1个。解题思路n!= 1*2*3*……*n;要想看n!结果尾部有多少个零,我们想到要想出现0,那一定是偶数*5,其实我们就可以看成是2*5,在1到n中2的个数肯定要比5的个数多的多,所以我们只需要看这些

2020-06-07 19:58:12 538

原创 图解洛谷P1143进制转换

进制转换题目描述请你编一程序实现两种不同进制之间的数据转换。输入格式共三行,第一行是一个正整数,表示需要转换的数的进制n(2≤n≤16),第二行是一个n进制数,若n>10则用大写字母A-F表示数码10-15,并且该n进制数对应的十进制的值不超过1000000000,第三行也是一个正整数,表示转换之后的数的进制m(2≤m≤16)。输出格式一个正整数,表示转换之后的mm进制数。样例输入:16FF2样例输出:11111111解题思路比较菜,所以用的也是很容易想到的一种方式,先将n

2020-06-07 09:40:22 636

原创 接雨水trapping-rain-water

接雨水题目链接题目描述给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6解题思路我们要求所能容纳的最多的雨水,那么我们只需要求每个柱子上方最多容纳多少,然后求和。一个柱子上面能容纳的雨水,取决于这个柱子两侧最高值(左x右y)的最小值,举个例

2020-06-06 15:55:17 872

原创 牛客网JS找出数组 arr 中重复出现过的元素

牛客网JS测评题目描述找出数组 arr 中重复出现过的元素输入:[1, 2, 4, 4, 3, 3, 1, 5, 3]输出:[1, 3, 4]代码如下indexOf()方法可返回某个指定的字符串值在字符串中首次出现的位置function duplicates(arr) { var arr1 = []; for(var i = 0; i < arr.length; i++){ var num = 0; for(var j = 0; j &lt

2020-06-06 15:22:51 458

原创 JS在数组 arr 开头添加元素 item。不要直接修改数组 arr,结果返回新的数组

牛客网JS测评题目描述在数组 arr 开头添加元素 item。不要直接修改数组 arr,结果返回新的数组输入:[1, 2, 3, 4], 10输出:[10, 1, 2, 3, 4]代码如下正确的代码function prepend(arr, item) { var arr1 = arr.slice(0); arr1.unshift(item); return arr1;}错误的代码unshift() 方法(在开头)向数组添加新元素,并“反向位移”旧元素,但是它返

2020-06-06 15:19:31 834

原创 JS在数组 arr 末尾添加元素 item。不要直接修改数组 arr,结果返回新的数组

牛客网JS测评题目描述在数组 arr 末尾添加元素 item。不要直接修改数组 arr,结果返回新的数组输入:[1, 2, 3, 4], 10输出:[1, 2, 3, 4, 10]代码如下正确的代码:slice() 方法用数组的某个片段切出新数组。function append(arr, item) { var arr1 = arr.slice(0); arr1.push(item); return arr1;}我的错误的代码:这是因为将 arr 赋值给 a

2020-06-06 15:15:13 697

原创 JS移除数组 arr 中的所有值与 item 相等的元素,直接在给定的 arr 数组上进行操作,并将结果返回

牛客网JS测评题目描述移除数组 arr 中的所有值与 item 相等的元素,直接在给定的 arr 数组上进行操作,并将结果返回输入:[1, 2, 2, 3, 4, 2, 2], 2输出:[1, 3, 4]代码如下在这里要注意在删除掉一个元素时,要 i–,即删除这个元素后,其他元素位置往前移。function removeWithoutCopy(arr, item) { for(var i = 0; i< arr.length; i++) { if(arr[i]==

2020-06-06 15:08:17 845

原创 dfs解决逃离迷宫问题

逃离迷宫题目描述小智被大坏蛋抓进一间有A x A个格子组成的矩阵迷宫。用 * 表示的是小智可以经过的格子;用 # 表示的是小智不可以经过的格子。小智的起始位置在左上角,他需要到达右下角的格子才能逃离迷宫。小智每一步可以移动到上下左右四个方向相邻的格子上,前提是目标格式必须是没有障碍的。现在小智可以用魔法移除格子上的障碍,也就是 # 变成 *,使其可以经过。请你计算在最多能移除B处障碍的情况下,小智最少移动多少步可以逃离迷宫。输入 第一行包含2个整数A和B。 以下A行包含一个A x A的矩

2020-06-06 08:50:16 1456 1

原创 湘大程设幸运数

幸运数题目描述如果一个十进制数只包含数字0和1,我们就称它是”幸运数”。例如0、1、10、11、100、1110等都是幸运数。给定一个整数N,请你计算N一共有多少种方法表示成两个非负幸运数的和。注意交换两个数的顺序视为同一种方法。输入 一个整数N。 0 <= N <= 1000000输出 一个整数表示答案样例输入 101样例输出 2解题思路幸运数是由0,1组成的十进制数,那么我们就可以想到 n 的每一位最大是2,如果有一位大于2,那么一定是不可能表示成两个幸运数的和

2020-06-06 08:26:33 433

原创 CSS3边框模块

CSS3边框CSS3 圆角边框border-radius 属性创建圆角。四个值:第一个值为左上角,第二个值为右上角,第三个值为右下角,第四个值为左下角。div { border:2px solid; width: 100px; height: 100px; border-radius: 25px 15px 20px 50px;}三个值第一个值为左上角, 第二个值为右上角和左下角,第三个值为右下角div { border:2px solid; width: 100px;

2020-06-05 20:02:03 183

原创 并查集解决洛谷P1536村村通

村村通题目链接题目描述题目描述某市调查城镇交通状况,得到现有城镇道路统计表。表中列出了每条道路直接连通的城镇。市政府 "村村通工程"的目标是使全市任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要相互之间可达即可)。请你计算出最少还需要建设多少条道路?输入格式输入包含若干组测试测试数据,每组测试数据的第一行给出两个用空格隔开的正整数,分别是城镇数目 n 和道路数目 m ;随后的 m 行对应 m 条道路,每行给出一对用空格隔开的正整数,分别是该条道路直接相连的两个城镇的编号。简单起

2020-06-05 16:23:44 204

原创 并查集解决洛谷P1551亲戚

亲戚(并查集)题目链接题目描述题目背景:若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系。题目描述:规定:x和y是亲戚,y和z是亲戚,那么x和z也是亲戚。如果x,y是亲戚,那么x的亲戚都是y的亲戚,y的亲戚也都是x的亲戚。输入输出样例样例1 请点击题目链接查看样例2 是我下载的一组数据输入:10 20 1010 55 62 94 24 98 54 65 19 15 16 56 1

2020-06-04 09:19:34 231

原创 快乐数happy-number

快乐数题目链接题目描述编写一个算法来判断一个数 n 是不是快乐数。 如果 n 是快乐数就返回 True ;不是,则返回 False 。「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环,但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。解题思路很明显,要求n是否是快乐数,就是要判断每一位的平方然后求和,判断和是否为1,但是需要判断每一个数是否在之前已经出现过,如果出现过,说明陷入了无限循环,那么一定不

2020-06-04 07:41:56 829

原创 湘大OJ1295Flawless Prime

Flawless Prime无瑕素数题目描述如果一个素数,依次去掉最高位得到一个数,这个数无前导0,并仍是素数的话,我们称其为“无瑕素数”。比如317是素数,去掉最高位3得到17仍然是素数,再去掉最高位1得到7,仍然是素数,所以317是“无瑕素数”。比如虽然107是素数,去掉最高位1得到7也是素数,但是因为存在前导0,所以这不是无瑕素数。 请写一个程序,判断某个素数是不是无瑕的。输入 第一行是一个整数K,表示样例的个数。 以后每行一个整数n(2≤n≤1,000,000,000)。输出 如果

2020-06-02 14:18:23 1714

原创 湘大OJ1121 欧拉函数

欧拉函数题目描述一个正整数n,那么我们称1到n-1中与n互质的数的个数为n的欧拉函数值。如果pi(i=1,2…k)是能整除n的所有素数,那么欧拉函数。比如6,与6互质的数为1和5,所以6的欧拉函数为2;能整除6的素数为2和3,那么根据公式,6*(1/2)*(2/3) = 2。输入有多个样例。每行输入一个整数n,(1<=n<=100,000,000),如果n为0,表示输入结束,这个样例不需要处理。输出每行输出一个整数的欧拉函数。样例输入1291000000000样

2020-05-31 11:09:00 1206

原创 湘潭大学OJ1296GCD

GCD题目描述题目描述a和b的最大公约数(Greatest Common Divisor)是最大的d,d能整除a和b。如果gcd(a,b)=1,我们就称a和b是互素的。给一个区间[a,b],求与6互素的数的个数。比如区间[1,10],与6互素的数为1,5,7,所以一共是3个。输入 第一行是一个整数K(K≤10,000),表示样例的个数。每个样例占一行,为区间[a,b], (1≤a≤b≤1,000,000,000)输出 每行输出一个样例的结果样例输入21 101 100000000

2020-05-30 13:59:36 838

原创 湘大1218 A+BVIII

题目描述题目描述小明一天在做a+b时,突然他想知道a+b能被哪些数整除了?比如说2+4=6,能整除6的数有1,2,3,6,一共4个。 请你帮他算一下,a+b的和能被几个数整除。输入 第一行是一个整数K,表示样例的个数。 每个样例占一行,为两个整数a,b,(1≤a,b≤1e9)。输出 每行输出一个样例的结果,为一个整数。样例输入22 34 2样例输出24解题思路这个题若是按照从i = 1到i * i<=(a+b)循环,直接找能被(a+b)整除的数字 会超时。所以直接来介

2020-05-29 14:45:45 1270

原创 湘潭大学OJ1131凹数

凹数题目描述如果一个十进制数的数码从左到右是先严格单调下降,然后严格单调上升,我们称这个数为凹数。比如说43212,这个数数码从4到1,然后从1到2,为一个凹数;另外比如4352,这个数从4到3,然后从3到5,然后又从5到2,所以不是个凹数。请计算在[a,b](100<=a<=b<1,000,000)之间有多少个凹数。Time Limit : 1000 MS Memory Limit : 65536 KB输入第一行是一个整数N,表示样例的个数。以后每行两个整数a和b。

2020-05-28 08:52:44 1238

原创 JS实现生成验证码

JS实现生成验证码Math.random() 函数返回一个浮点, 伪随机数在范围从0到小于1,也就是说,从0(包括0)往上,但是不包括1(排除1)Math.floor() 返回小于或等于一个给定数字的最大整数。function createRndCode(){ var chars = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A'

2020-05-27 21:02:54 360

原创 JS实现表格全选和取消全选

JS实现表单全选和取消全选HTML部分<div id=""> <table border="" cellspacing="" cellpadding=""> <thead> <tr> <th> <input type="checkbox" name="" id="chAll" value="" /> </th> <th>商品</th> <th>价

2020-05-27 20:49:42 3719

原创 湘潭大学OJ1089质因数分解

质因数分解题目描述Description任意一个正整数可以分解成唯一的质因数的乘积,给出正整数,请计算出它的质因数分解式。输入每行一个正整数2<=n<=10^8。输出每行输出一个对应结果。使用”^”表示幂,”*”表示乘,质因子应该按从小到大的顺序输出,如果某一个质因子只有一次,那么就不要输出它的幂。Sample Input2636Sample Output22*32^2*3^2解题思路思路很简单,从i=2到 i*i<=n循环,当遇到一个

2020-05-27 13:52:21 1658

原创 质因数个数问题

质因数个数题目链接题目描述求正整数N(N>1)的质因数的个数。相同的质因数需要重复计算。如120=22235,共有5个质因数。解题思路代码如下#include<bits/stdc++.h>using namespace std;int main() { int n; while(scanf("%d",&n)!=EOF) { int num = 0; for(int i = 2; i*i<=n; i++) { while(n%i==0) {

2020-05-26 07:35:11 1427 1

原创 dfs解决n皇后问题

n皇后问题题目链接题目描述给定一个 n,要求在 n×n 格的棋盘上摆放n个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上。解题思路我们从第一行到第n行放置,在放置每一行时,我们从第1列遍历到第n列,查看每一列是否放置过,且要判断斜对角线上是否放置过。思路比较简单。我自己认为的一个难点就是,怎样判断斜对角线上是否放置过棋子。我们把棋盘看成一个个小方块,行我们从上到下编号为1…n,列我们从左到右编号为1…n,对于右下的对角线,我们不难发现,它的行列对应的值分别加 1, 那

2020-05-25 09:02:40 765

原创 dfs解决组合问题

dfs解决组合问题题目链接题目概述组合就是从n个元素中抽出r个元素(不分顺序且 r <= n ),我们可以简单地将n个元素理解为自然数1,2,…,n,从中任取r个数。输入: 一行两个自然数 n、r ( 1 < n < 21,1 < = r < = n )。输出: 所有的组合,每一个组合占一行且其中的元素按由小到大的顺序排列,所有的组合也按字典顺序。例如 n = 5 ,r = 3 ,所有组合为:1 2 31 2 41 2 51 3 41 3 51 4 5

2020-05-24 19:24:32 575

原创 hdu1215七夕节求因子和

hdu 七夕节 点击前往题目链接题目描述有T个样例,每个样例给定一个N,将所给N的所有因子相加求和。N的因子就是所有比N小又能被N整除的所有正整数。如12的因子有1,2,3,4,6。(T(1<=T<=500000),N(1<=N<=500000))解题思路这个题思路很简单,可能你首先想到了不就是从1到n进行遍历,找他的因子,再用一个变量计算因子和不就可以了么。但是我们观察到,样例个数T和给定的N都可能会很大,假如直接遍历1到N,那么时间复杂度就会很大,会导致超时。所以我们就想

2020-05-24 16:29:43 171

原创 湘潭大学OJ-1098求区间内素数个数问题

求区间内素数个数问题题目描述Description给定两个非负整数a,b,其中0<= a,b<=1,000,000,请计算这两个数之间有多少个素数。限制:Time Limit : 1000 MS Memory Limit : 65536 KB输入第一行是一个整数K(1<=K<=1000),表示有多少个样例,每个样例占一行,是两个整数a和b,每个整数之间用一个空格隔开。输出每行输出一个样例的结果。Sample Input22 317 19Sam

2020-05-21 14:17:39 3461 2

原创 dfs解决 hdu1016 Prime Ring Problem

Prime Ring Problem问题题目链接题目概述给定一个n,要求将从1…n这些数字按一定顺序围成圆圈,使得相邻两个数字之和为素数,且第一个数字一定为1,要求输出可能的序列。解题思路首先,放置数字的问题,类似于n个数字的全排列,这里的要求是相邻数字和为素数,那么要注意,到了放置第n个数字时,需要考察它与1的和是否也为素数。 那么这里首先涉及了一个问题—判断一个数是否为素数(方法见下方)。我们从第1个位置到第n个位置,依次放置数字,循环遍历1到n的数字,判断每个数是否已经放置过,若没有放置过,

2020-05-21 09:38:00 1023 1

原创 dfs解决全排列问题

dfs解决全排列问题 题目链接.问题描述给定一个n(0<n≤10),打印n的全排列,要求按字典序输出。解题思路该问题相当于找出从某点到目的点的所有路径问题,于是想到用dfs深度优先算法,找到一条路径即可输出。思路大致是,先放置一个数,然后在没有放置过的数字当中选择一个放在下一个位置,依次进行,那我们发现,其实在选择放置下一个数字时,和解决之前的问题是一样的 还是要在没有放置过的数字当中选一个放置,这样就是把问题分解成为了规模更小的相同的问题,那么我们就想到递归。递归 首先要有一个终止条件,那

2020-05-20 10:41:11 512

原创 CSS文字图标的下载和使用

CSS文字图标的下载和使用两个主要的网站1.国外网站 — IcoMoon.2.国内网站 — Iconfont下载方式(以IcoMoon为例)点击右上角 IcoMoon App点击图标即可选中,也可在页面最下方点击Add Icons From Library查看更多图标可通过上方画笔(Edit)按钮编辑图标,进行旋转等操作选择完后点击右下方Generate Font ----- Download使用方式解压缩,所有的文件都不要删将style.css文件中的@font-face部分

2020-05-19 20:14:17 526 1

原创 bfs解决poj3984迷宫问题

poj3984迷宫问题 题目链接题目叙述给定一大小为5*5的数组,数组元素由0,1组成,0表示可以通过,1表示为墙壁,不可通过,而且只能向上,向下,向左,向右行走,现要求从(0,0)位置到(4,4)位置的最短路径。解题思路首先,求最短路径问题,很明显可以用到宽度优先搜索bfs,从(0,0)点开始,走四面可以走的路,然后再从这些路,找继续可以往下走的路,直到最先找到了一条路径可以走到(4,4)点,这里需要用到队列queue去储存从所在点的位置走一步可以到达的点,(在走的时候,需要注意坐标x,y都要在

2020-05-19 18:26:58 416 1

空空如也

空空如也

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

TA关注的人

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