自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 可见的山峰对数量(单调栈)

可见的山峰对数量(单调栈)问题重述:一个不含有负数的数组可以代表一圈环形山,每个位置的值代表山的高度。比如,{3,1,2,4,5},{4,5,3,1,2}或{1,2,4,5,3}都代表同样结构的环形山。3->1->2->4->5->3 方向叫作 next 方向(逆时针),3->5->4->2->1->3 方向叫作 last 方向(顺时针)。山峰 A 和 山峰 B 能够相互看见的条件为:如果 A 和 B 是同一座山,认为不能相互看见。如果

2021-09-05 13:26:24 294

原创 最大值减去最小值小于等于num的子数组数量

最大值减去最小值小于等于num的子数组数量问题重述:给定数组 arr 和整数 num,共返回有多少个子数组满足如下情况:max(arr[i…j]) - min(arr[i…j]) <= nummax(arr[i…j])表示子数组arr[i…j]中的最大值,min[arr[i…j])表示子数组arr[i…j]中的最小值。输入描述:第一行输入两个数 n 和 num,其中 n 表示数组 arr 的长度第二行输入n个整数XiX_iXi,表示数组arr中的每个元素输出描述:输出给定数组中满足

2021-08-16 15:18:34 394

原创 求最大矩形(单调栈)

求最大矩形问题重述:给定一个整型矩阵map,其中的值只有0和1两种,求其中全是1的所有矩形区域中,最大的矩形区域为1的数量。例如:1 1 1 0其中,最大的矩形区域有3个1,所以返回3。再如:1 0 1 11 1 1 11 1 1 0其中,最大的矩形区域有6个1,所以返回6问题分析:看到这个问题,我们应该第一时间想到使用单调栈,使用单调栈找到左右比当前高度低的最低位置,然后这之间的矩形就是最大的,如果再往左或往右高度都会小于当前高度,所以不行。我们在求最大矩形时,有可能最大的并不包

2021-08-07 19:35:53 397

原创 求元素左右较小值(单调栈)

求元素左右小于本身的值问题重述:给你一个整数数组 arr,求得每个元素左右小于其本身且距离它最近的元素,若不存在给定-1,返回所有位置的对应信息示例 1:输入:arr = [3, 4, 1, 3, 5, 2, 7]输出:-1 20 2-1 -12 53 52 -15 -1输入: repeatArr = {3, 4, 1, 5, 3, 5, 2, 7}输出:-1 20 2-1 -12 42 64 62 -16 -1问题分析:输入数组有两种可能,一种是不重复的

2021-08-01 10:57:32 213

原创 生成窗口最大值数组

生成窗口最大数组(优先队列、单调队列)问题重述:给你一个整数数组 arr,有一个大小为 w 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值示例 1:输入:arr = [1,3,-1,-3,5,3,6,7], k = 3输出:[3,3,5,5,6,7]解释:滑动窗口的位置 最大值--------------- -----[1 3 -1] -3

2021-07-28 20:51:56 175

原创 阶乘和(二进制枚举、dfs枚举)

3481. 阶乘的和问题重述:给定一个非负整数 n,请你判断是否存在一些整数 xi,能够使得 n=∑1≤i≤txi!,其中 t≥1,xi≥0,xi=xj iff i=j。iff 表示当且仅当。输入格式输入包含多组测试数据。每组数据占一行,包含一个非负整数 n。最后一行是一个负数,表示输入结束,无需处理。输出格式每组数据输出一行结果,如果 n 能表示为若干数的阶乘之和,则输出 YES,否则输出 NO。数据范围0≤n≤106,每组输入最多包含 100 组数据。输入样例:9-1输

2021-05-29 15:39:34 350

原创 Java在算法题中的输入问题

Java在算法题中的输入问题在写算法题的时候,经常因为数据的输入问题而导致卡壳,其中最常见的就是数据输入无法结束。1.给定范围,确定输入几个数据直接使用普通的Scanner输入数据范围,然后使用for循环输入后续数据。例如:Scanner scanner = new Scanner(System.in);//输入数据的范围int n = scanner.nextInt();for(int i = 0;i < n;i++){ arrays[i] = scanner.ne

2021-05-24 21:21:00 613

原创 星期几(模拟)

3489. 星期几问题重述:已知 11 年 11 月 11 日是星期一。现在给定一个日期,请你判断是星期几。注意闰年的 22 月有 2929 天。满足下面条件之一的是闰年:年份是 44 的整数倍,而且不是 100100 的整数倍;年份是 400400 的整数倍。输入格式输入包含多组测试数据。每组数据占一行,包含一个整数 dd 表示日,一个字符串 mm 表示月,一个整数 yy 表示年。月份 1∼121∼12,依次如下所示:January, February, March, Apri

2021-05-24 20:33:14 502

原创 最小路径和(DFS)

3502. 不同路径数问题重述:给定一个 n×m的二维矩阵,其中的每个元素都是一个 [1,9][1,9] 之间的正整数。从矩阵中的任意位置出发,每次可以沿上下左右四个方向前进一步,走过的位置可以重复走。走了 k次后,经过的元素会构成一个 (k+1) 位数。请求出一共可以走出多少个不同的 (k+1) 位数。输入格式第一行包含三个整数 n,m,k。接下来 n 行,每行包含 m 个空格隔开的整数,表示给定矩阵。输出格式输出一个整数,表示可以走出的不同 (k+1) 位数的个数。数据范围对于

2021-05-24 16:39:58 627

原创 最大和(双指针、前缀和)

3493. 最大的和问题重述:给定一个长度为 n的正整数数列 a1,a2,…,an。初始时,数列中的每个元素要么处于可选状态,要么处于不可选状态。你可以选择一个长度恰好为 k 的区间 [i,i+k−1],使得 ai∼ai+k−1 这 k 个元素的状态全部变为可选。请问,在经过此操作后,所有处于可选状态的元素之和最大是多少。输入格式第一行包含两个整数 n和 k。第二行包含 n个整数 ai。第三行包含一个长度为 n 的 01 序列,如果第 i个数为 1,表示 ai 的初始状态为可选,如果第 i

2021-05-18 10:32:36 292

空空如也

空空如也

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

TA关注的人

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