- 博客(21)
- 收藏
- 关注
原创 代码收集0018——二分法
方法一:int binarySearch(vector<int>& nums,int target){ int left=0,right=nums.size()-1; while(left<=right) { int mid=left+(right -left)>>1; if(nums[mid]==target) return mid; else if(nums[mid]<target)
2021-07-12 16:15:05 105
原创 代码收集0017——求子集
vector<vector<int>> subsets(vector<int>& nums) { vector<vector<int>> ans; int n=nums.size(); for(int cnt=0;cnt<(1<<n);cnt++)//the cnt subset { vector<int> subset; for(int
2021-02-26 20:03:14 133
原创 代码收集0016——树
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: int INF=1e9+7; TreeNode *LCA(T
2021-02-22 12:49:10 88
原创 单调栈的运用
单调栈monotonous stack一个比较好理解的数据结构,正如其名,具有单调性的栈。vector<int> mono_s;//stack is also availablefor(int i=0;i<nums.size();i++){ while(!mono_s.empty()&&nums[mono_s.back()]<nums[i]) { /*the operations you want to do * */
2021-02-21 17:40:30 102
原创 代码收集0015——马拉车算法
class Manacher{private: int maxlen=0,maxcenter=0; void man(string s) { string m="$#"; int n=s.size(); for(int i=0;i<n;i++) { m+=s[i]; m+='#'; } int len=m.size(); vec
2021-02-08 23:33:52 84
原创 代码收集0014——找到从起点到终点的路
int Path(vector<vector<int>>& point) { int row=point.size(),col=point[0].size(),ans=0; const vector<vector<int>> direction{{-1,0},{1,0},{0,-1},{0,1}}; int left=0,right=max_possible_ans+1;//we try to use
2021-01-30 22:08:29 105
原创 代码收集0013——并查集
class UnionFindSet{private: vector<int> parent;public: UnionFindSet(int n):parent(n) { iota(parent.begin(),parent.end(),0); } int Find(int idx) { if(parent[idx]!=idx) parent[idx]=Find(parent[idx
2021-01-23 11:10:51 76
原创 敲代码的那些事
1.【转载】“孔乙己,你又没有思路了!”他不回答,只是将题解ctrl+c再ctrl+v到编辑器。他们又故意的高声嚷道,“你一定又写不出代码了了!”孔乙己睁大眼睛说,“你怎么这样凭空污人清白……”“什么清白?我前天亲眼见你copy了别人的整段代码,吊着打。”孔乙己便涨红了脸,额上的青筋条条绽出,争辩道,“copy代码不能算copy……抄!……程序员的事,能算抄么?”接连便是难懂的话,什么“拓展思路”,什么“借鉴”之类,引得众人都哄笑起来:评论区内外充满了快活的空气。2.【原创】divide and conq
2020-11-05 23:05:41 120
原创 代码收集0012——快速幂与矩阵快速幂
一个自然数k可以写成k=∑1nai∗2i,ai∈{0,1}k=\sum_1^na_i*2^i,a_i\in\{0,1\}k=∑1nai∗2i,ai∈{0,1}的形式。快速幂的思想就基于此。比如a21=a(1∗20+1∗22+1∗24)=a1∗a4∗a16a^{21}=a^{(1*2^0+1*2^2+1*2^4)} =a^1*a^4*a^{16}a21=a(1∗20+1∗22+1∗24)=a1∗a4∗a16C++:(mod为要取模的数,无则删去)long long llpow(lon
2020-06-28 20:13:38 199
原创 代码收集0011——组合数取模
C++版本使用方法:卢卡斯定理求逆元的方式:扩展欧几里得算法其中mod是要取余的数long long Extended_Euclid(long long a,long long b,long long &x,long long &y){ if(a==0&&b==0) return -1; if(b==0) { x=1; y=0; return a; } long
2020-06-26 22:49:48 159
原创 代码收集0010——质数
int PrimeCount(int n){ int cnt=0; int prime; while(n%2==0) { cnt++; n/=2; } for(prime=3;prime<=n;prime+=2) { while(n!=1) { i...
2020-04-26 21:36:26 131
原创 代码收集0009——大整数运算
乘法:int BigInt_Multiply(int num[],int a,int len)//the ans is inverse{ int last=len; int cf=0;//carry flag for(int i=0;i<=len;i++) { num[i]=num[i]*a+cf; if(b[i]>=...
2020-04-07 08:02:14 160
转载 代码收集0008——求逆元
扩展欧几里得算法可以求解ax+by=gcd(a,b)这样一个不定方程的同时求出gcd(a,b)C语言long long Extended_Euclid(long long a,long long b,long long *x,long long *y){ if(b==0) { *x=1; *y=0; return a; ...
2020-04-03 21:04:18 448
原创 代码收集0007——排列组合
组合:C语言unsigned long long combination(int n,int m){ /* Cnm=n!/(m!*(n-m)!) */ unsigned long long ans=1; if(n==0) return 0; if(n==m||m==0) return 1; if(m>...
2020-03-28 14:44:16 142
原创 代码收集0006——前缀波兰式的计算
C语言版:double PrePolish(){ char str[10]; double f1,f2; scanf("%s",str); switch(str[0]) { case'+':{f1=PrePolish();f2=PrePolish();return f1+f2;} case'-':{f1=PrePolish()...
2020-03-27 20:15:48 217
转载 代码收集0005——给定年月日返回星期
1就是星期一……7就是星期日int getDay(int year, int month, int day){ if (month == 1 || month == 2) year--; int k = day; int m = ((month - 2) + 12) % 12; if (m == 0) m = 12; int Y = year % 100...
2020-03-23 16:25:53 101
原创 代码收集0004——输出数据时用空格填充
要求:已知有cnt个间隔(即(cnt+1)个数据)和space个空格。由空格补足每行长度,空格在所有数据之间尽可能均匀分布,在满足上述条件下,空格尽可能置于靠右的位置。C语言:while(...&&cnt>=0){ printf(""); for(int i=0;cnt&&i<space/cnt;i++) putchar(' ');...
2020-03-20 20:57:37 153
原创 代码收集0003——在整行读入并处理字符串时忽略行前空格
C语言通过一个for循环找到第一个不为空格的地方。for(int j=0;str[j]==' ';j++);int start=j;
2020-03-20 20:47:03 216
原创 代码收集0002——输出地址
输出一个浮点型的地址 C语言void addressF(char str[]){ double x=atof(str); unsigned char *p=(unsigned char *)&x; int y=sizeof(x); while(y--) printf("%02x ",*p++); printf("\n");}...
2020-03-17 19:55:06 171
原创 代码收集0001——求最大公约数(GCD)和最小公倍数(LCM)
求最大公约数(GCD)和最小公倍数(LCM)的代码C语言:int GDB(int a,int b){ if(b==0) return a; else return GDB(b,a%b);}int LCM(int x,int y){ return x*y/GDB(x,y);}可根据需要改为long long...
2020-03-17 16:43:12 208
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人