自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 浅谈KMP算法【c++】

一、暴力做法 给定一个模式串S,以及一个模板串P,所有字符串中只包含大小写英文字母以及阿拉伯数字。 模板串P在模式串S 中多次作为子串出现。 求出模板串P在模式串S中所有出现的位置的起始下标。 输入格式 第一行输入整数N,表示字符串P的长度。 第二行输入字符串P。 第三行输入整数M,表示字符串S的长度。 第四行输入字符串S。 输出格式 共一行,输出所有出现位置的起始下标(下标从0开始计数),整数之间用空格隔开。 数据范围 1≤N≤10^5 1≤M...

2022-03-08 15:39:42 169

转载 AcWing 802. 区间和【c++】

一、题目 假定有一个无限长的数轴,数轴上每个坐标上的数都是00。 现在,我们首先进行nn次操作,每次操作将某一位置xx上的数加cc。 接下来,进行mm次询问,每个询问包含两个整数ll和rr,你需要求出在区间[l,r][l,r]之间的所有数的和。 输入格式 第一行包含两个整数nn和mm。 接下来nn行,每行包含两个整数xx和cc。 再接下来mm行,每行包含两个整数ll和rr。 输出格式 共mm行,每行输出一个询问中所求的区间内数字和。 ...

2022-03-05 16:28:20 147

原创 AcWing 801. 二进制中1的个数 【c++】

一、题目 给定一个长度为 nn 的数列,请你求出数列中每个数的二进制表示中 11 的个数。 输入格式 第一行包含整数 nn。 第二行包含 nn 个整数,表示整个数列。 输出格式 共一行,包含 nn 个整数,其中的第 ii 个数表示数列中的第 ii 个数的二进制表示中 11 的个数。 数据范围 1≤n≤1000001≤n≤100000, 0≤数列中元素的值≤1090≤数列中元素的值≤109 输入样例: 5 1 2 3 4 5 输出样例: 1 1 2 1 2 二、题解 lowb

2022-02-08 20:46:20 648 1

原创 AcWing 799. 最长连续不重复子序列【c++】

一、题目 给定一个长度为 nn 的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。 输入格式 第一行包含整数 nn。 第二行包含 nn 个整数(均在 0∼1050∼105 范围内),表示整数序列。 输出格式 共一行,包含一个整数,表示最长的不包含重复的数的连续区间的长度。 数据范围 1≤n≤1051≤n≤105 输入样例: 5 1 2 2 3 5 输出样例: 3 二、题解 双指针算法的简单运用,巧妙地运用标记数组进行check #include <i

2022-02-08 20:07:02 638

原创 AcWing 798. 差分矩阵【c++】

一、题目 输入一个nn行mm列的整数矩阵,再输入qq个操作,每个操作包含五个整数x1,y1,x2,y2,cx1,y1,x2,y2,c,其中(x1,y1)(x1,y1)和(x2,y2)(x2,y2)表示一个子矩阵的左上角坐标和右下角坐标。 每个操作都要将选中的子矩阵中的每个元素的值加上cc。 请你将进行完所有操作后的矩阵输出。 输入格式 第一行包含整数n,m,qn,m,q。 接下来nn行,每行包含mm个整数,表示整数矩阵。 接下来qq行,每行包含55个整...

2022-02-07 18:30:26 123

原创 AcWing 797. 差分【c++】

一、题目 输入一个长度为nn的整数序列。 接下来输入mm个操作,每个操作包含三个整数l,r,cl,r,c,表示将序列中[l,r][l,r]之间的每个数加上cc。 请你输出进行完所有操作后的序列。 输入格式 第一行包含两个整数nn和mm。 第二行包含nn个整数,表示整数序列。 接下来mm行,每行包含三个整数l,r,cl,r,c,表示一个操作。 输出格式 共一行,包含nn个整数,表示最终序列。 数据范围 1≤n,m≤1000001≤n,m≤100000,...

2022-02-07 17:43:19 115

原创 AcWing 796. 子矩阵的和 【c++】

一、题目 输入一个 nn 行 mm 列的整数矩阵,再输入 qq 个询问,每个询问包含四个整数 x1,y1,x2,y2x1,y1,x2,y2,表示一个子矩阵的左上角坐标和右下角坐标。 对于每个询问输出子矩阵中所有数的和。 输入格式 第一行包含三个整数 n,m,qn,m,q。 接下来 nn 行,每行包含 mm 个整数,表示整数矩阵。 接下来 qq 行,每行包含四个整数 x1,y1,x2,y2x1,y1,x2,y2,表示一组询问。 输出格式 共 qq 行,每行输出一个询问的结果。 数据范围 1

2022-02-04 20:46:10 330

原创 AcWing.795. 前缀和【c++】

一、题目 输入一个长度为nn的整数序列。 接下来再输入mm个询问,每个询问输入一对l,rl,r。 对于每个询问,输出原序列中从第ll个数到第rr个数的和。 输入格式 第一行包含两个整数nn和mm。 第二行包含nn个整数,表示整数数列。 接下来mm行,每行包含两个整数ll和rr,表示一个询问的区间范围。 输出格式 共mm行,每行输出一个询问的结果。 数据范围 1≤l≤r≤n1≤l≤r≤n, 1≤n,m≤1000001≤n,m≤100000, −1...

2022-01-24 20:04:16 1242

原创 AcWing.794. 高精度除法【c++】

一、题目 给定两个非负整数(不含前导00)A,BA,B,请你计算A/BA/B的商和余数。 输入格式 共两行,第一行包含整数AA,第二行包含整数BB。 输出格式 共两行,第一行输出所求的商,第二行输出所求余数。 数据范围 1≤A的长度≤1000001≤A的长度≤100000, 1≤B≤100001≤B≤10000, BB一定不为00 输入样例: 7 2 输出样例: 3 1 二、解答 #include <iostream> #include <...

2022-01-24 19:41:39 104

原创 LeetCode 283.移动零【c++】

一、题目 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明: 必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数。 二、解答 i,j双指针,用i遍历数组,用j记录非零数,最后补0 class Solution { public: void moveZeroes(vector<int>& nums) { int

2022-01-17 15:21:12 167

原创 AcWing.793. 高精度乘法【c++】

一、题目 给定两个非负整数(不含前导00)AA和BB,请你计算A×BA×B的值。 输入格式 共两行,第一行包含整数AA,第二行包含整数BB。 输出格式 共一行,包含A×BA×B的值。 数据范围 1≤A的长度≤1000001≤A的长度≤100000, 0≤B≤100000≤B≤10000 输入样例: 2 3 输出样例: 6 二、解答 跟高精度加法类似 #include <iostream> #include <vector> us...

2022-01-17 14:45:27 181

原创 AcWing.792. 高精度减法【c++】

一、题目 给定两个正整数(不含前导00),计算它们的差,计算结果可能为负数。 输入格式 共两行,每行包含一个整数。 输出格式 共一行,包含所求的差。 数据范围 1≤整数长度≤1051≤整数长度≤105 输入样例: 32 11 输出样例: 21 二、解答 跟高精度加法类似,注意去掉前导零,比较A,B大小就可以了 #include <iostream> #include <vector> using namespace std; bool cmp(.

2022-01-17 14:31:51 109

原创 AcWing.791. 高精度加法【c++】

一、题目 给定两个正整数(不含前导00),计算它们的和。 输入格式 共两行,每行包含一个整数。 输出格式 共一行,包含所求的和。 数据范围 1≤整数长度≤1000001≤整数长度≤100000 输入样例: 12 23 输出样例: 35 二、解答 #include <iostream> #include <vector> using namespace std; const int N = 100010; vector<int> add.

2022-01-17 14:05:06 101

原创 AcWing.790. 数的三次方根【c++】

一、题目 给定一个浮点数 nn,求它的三次方根。 输入格式 共一行,包含一个浮点数 nn。 输出格式 共一行,包含一个浮点数,表示问题的解。 注意,结果保留 66 位小数。 数据范围 −10000≤n≤10000−10000≤n≤10000 输入样例: 1000.00 输出样例: 10.000000 二、解答 很水的题目... #include <iostream> using namespace std; int main() { double n

2022-01-17 13:45:58 316

原创 AcWing.789. 数的范围【c++】

一、题目 给定一个按照升序排列的长度为nn的整数数组,以及qq个查询。 对于每个查询,返回一个元素kk的起始位置和终止位置(位置从00开始计数)。 如果数组中不存在该元素,则返回-1 -1。 输入格式 第一行包含整数nn和qq,表示数组长度和询问个数。 第二行包含nn个整数(均在1∼100001∼10000范围内),表示完整数组。 接下来qq行,每行包含一个整数kk,表示一个询问元素。 输出格式 共qq行,每行包含两个整数,表示所求元素的起始位置和...

2022-01-17 13:20:04 153

原创 AcWing.788. 逆序对的数量【c++】

一、题目 给定一个长度为nn的整数数列,请你计算数列中的逆序对的数量。 逆序对的定义如下:对于数列的第ii个和第jj个元素,如果满足i<ji<j且a[i]>a[j]a[i]>a[j],则其为一个逆序对;否则不是。 输入格式 第一行包含整数nn,表示数列的长度。 第二行包含nn个整数,表示整个数列。 输出格式 输出一个整数,表示逆序对的个数。 数据范围 1≤n≤1000001≤n≤100000, 数列中的元素的取值范围[1,109][1,10...

2022-01-16 22:18:28 296

原创 AcWing.787. 归并排序【c++】

一、题目 给定你一个长度为nn的整数数列。 请你使用归并排序对这个数列按照从小到大进行排序。 并将排好序的数列按顺序输出。 输入格式 输入共两行,第一行包含整数nn。 第二行包含nn个整数(所有整数均在1∼1091∼109范围内),表示整个数列。 输出格式 输出共一行,包含nn个整数,表示排好序的数列。 数据范围 1≤n≤1000001≤n≤100000 输入样例: 5 3 1 2 4 5 输出样例: 1 2 3 4 5 二、解答 简单的归并排序。 ...

2022-01-16 20:23:02 136

原创 AcWing.786. 第k个数.【c++】

一、题目 给定一个长度为 nn 的整数数列,以及一个整数 kk,请用快速选择算法求出数列从小到大排序后的第 kk 个数。 输入格式 第一行包含两个整数 nn 和 kk。 第二行包含 nn 个整数(所有整数均在 1∼1091∼109 范围内),表示整数数列。 输出格式 输出一个整数,表示数列的第 kk小数。 数据范围 1≤n≤1000001≤n≤100000, 1≤k≤n1≤k≤n 输入样例: 5 3 2 4 1 5 3 输出样例: 3 二、解答 快排之后,输出第k个数,即数

2022-01-16 19:54:05 229

原创 AcWing785.快速排序.【c++】

一、题目 给定你一个长度为nn的整数数列。 请你使用快速排序对这个数列按照从小到大进行排序。 并将排好序的数列按顺序输出。 输入格式 输入共两行,第一行包含整数nn。 第二行包含nn个整数(所有整数均在1∼1091∼109范围内),表示整个数列。 输出格式 输出共一行,包含nn个整数,表示排好序的数列。 数据范围 1≤n≤1000001≤n≤100000 输入样例: 5 3 1 2 4 5 输出样例: 1 2 3 4 5 二、解答 AcWing的第一课...

2022-01-16 19:49:49 111

原创 LeetCode1. 两数之和.【c++】

一、题目 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 示例 1: 输入:nums = [2,7,11,15], target = 9 输出:[0,1] 解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。 示例 2: 输入:nums = [3,

2022-01-16 19:17:00 83

原创 LeetCode 88. 合并两个有序数组.【c++】

一、题目 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。 注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。 示例 1: 输入:nums1

2022-01-15 21:49:14 168 1

空空如也

空空如也

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

TA关注的人

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