
acwing刷题
记录自己学习的一个专栏。
奔跑 の蜗牛
这个作者很懒,什么都没留下…
展开
-
哈希表的使用
哈希表一般用于存储键值对即key-val一般是由数组和链表构成常用操作//查找是否存在键值unordered_map<int,int> hash;hash.find(key)==hash.end();hash.count(key)==1;例题290. Word Pattern由于C++中的哈希表不能查找某一值的存在,只能查找某一键是否存在,所以C++需要两个哈希表来相互存储。class Solution {public: //将字符串传入到数组原创 2021-07-27 22:29:07 · 2411 阅读 · 0 评论 -
常见排序算法
几个基础概念:稳定:如果原数组中a在b的前面a与b相等,且排序之后a仍然在b的前面,称为该算法稳定。否则为不稳定。排序算法中经常用到排序的起始位置和数组长度以及交换操作。注意:有些传入函数的参数是数组和数组长度,而有一些是数组和左下标及右下标。//起始位置int start = 0;//数组长度int length = sizeof(arr)/sizeof(int);//交换两个数值的函数void swap(int &a,int &b){ int temp =原创 2021-07-26 22:23:57 · 216 阅读 · 0 评论 -
双指针Leetcode刷题
485.最大连续1的个数:这道题比较简单也不需要双指针,只需要遍历一次即可原创 2021-07-10 21:51:41 · 177 阅读 · 0 评论 -
双指针解决无重复最长子串
双指针主要用于遍历数组,可以用于优化双重for循环,使得时间复杂度达到O(n),这里的指针不是指针变量,而是用于滑动指向不同元素。以下为双指针的通用模板,利用一快一慢指针对中间的字符串进行操作for(i=0,j=0;i<n;i++){ while(j<i&&check(i,j))j++; //每道题的逻辑}例题799. 最长连续不重复子序列 - AcWing题库#include<iostream>using namespace s.原创 2021-07-01 10:30:13 · 175 阅读 · 0 评论 -
acwing.796子矩阵的和
#include<iostream>using namespace std;const int N=1010;int n,m,q;int a[N][N],S[N][N];int main(){ scanf("%d%d%d",&n,&m,&q); for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ scanf("%d",&a[i][j])...原创 2021-06-29 13:40:08 · 187 阅读 · 0 评论 -
acwing795.前缀和
计算一段数组区间的和注意从1开始区间的和为#include<iostream>using namespace std;const int N = 100010;int n,m;int a[N],s[N];int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++)scanf("%d",&a[i]); for(int i=1;i<...原创 2021-06-29 10:26:07 · 85 阅读 · 0 评论 -
acwing794.高精度除法
#include<iostream>#include<vector>#include<algorithm>using namespace std;//高精度的整数除以低精度的整数// v1/v2 = res...rvector<int> div(vector<int>&v1,int &v2,int &r){ vector<int>res; r=0; for(in...原创 2021-06-29 09:22:06 · 173 阅读 · 0 评论 -
acwing793. 高精度乘法
#include<iostream>using namespace std;#include<vector>vector<int> mul(vector<int>v1,int v2){ vector<int> res;//当存在其中一个为0时直接返回0即可 if((v1.size()==1&&v1[0]==0)||v2==0){ res.push_back(0); re...原创 2021-06-28 19:39:24 · 150 阅读 · 0 评论 -
acwing792.高精度减法
#include<iostream>#include<vector>#include<string>using namespace std;vector<int> sub(vector<int>v1, vector<int>v2) { vector<int> res; for (int i = 0, t = 0; i < v1.size(); i++) { t = v1[i] - t;//减数先...原创 2021-06-28 19:31:48 · 126 阅读 · 0 评论 -
acwing791高精度加法
使用数组对超过 int 型的数值进行加法运算#include<iostream>using namespace std;#include<vector>vector<int> add(vector<int> &v1,vector<int> &v2){ vector<int>res; int t=0;//进位 //由于v1,v2长度未知,需要确定在其范围内 //如..原创 2021-06-28 19:29:02 · 115 阅读 · 0 评论