![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
D-wade.陈
哭着来到这个世界,就要笑着离开。
展开
-
二分算法
通俗理解:int BinarySearch(int a[],int size,int p){ int l=0; int r=size-1; while(l<=r){ int mid=l+(r-l)/2 if(p==a[mid]) return mid; else if(p>a[mid]) l=mid+1; else r=mid-1; }}模板:bool check(int x) {/* ... */} // 检查x是否满足某种性质// 区间[l, r]被划分转载 2020-07-29 18:04:06 · 81 阅读 · 0 评论 -
前缀和
定义:定义一个数组S,S[i]表示a[1]到a[i]的和那么求[l,r]区间的和,求出S[r]-S[l]即可数组S存储的就是前缀和实现:#include<iostream>using namespace std;int a[1000001];int S[1000001];int main(){ int i, j, k; int n; cin >&...原创 2020-07-29 15:20:03 · 91 阅读 · 0 评论 -
求一点是否在正方形/矩形中
题目描述:给出了正方形的坐标x,y和边长a,那么正方形的对角分别为x,y和x+a,y+a,给一个坐标,问坐标是否在正方形中(边界上也算)输入:3 2 88 10输出:yes编写简单函数:bool IsinRange(int a, int Num, int b) { return a <= Num && Num <= b;}题目扩充:...原创 2020-04-29 23:26:02 · 1555 阅读 · 2 评论 -
求数组中最大值
注意:要把数组中每个数据都遍历一遍若存在负数时,初值应该选用什么**(bug)**若要顺便确定合法性时,初值选用什么#include<iostream>using namespace std;int square[55];const int minint = -100000000;bool insquare[55];int main() { int i =...原创 2020-04-29 22:05:59 · 191 阅读 · 0 评论 -
除2取余法
要求:给一个十进制数n,求出n二进制各个数位的和方法:除以2取余法,将值相加即可#include<iostream>using namespace std;int main() { int n, temp = 0, num = 0; cin >> n; num = n; int ans = 0; while (n>0) { ...原创 2020-04-29 08:44:34 · 7902 阅读 · 0 评论 -
C++实现进制转换
一. 十进制a转换为D进制vector<int> v; //用于保存获得的q进制数int a,D; //a为十进制,D为进制数do{ int temp=a%D; //除留余数法 v.push_back(temp); //存放 a/=D;}while(a!=0);//倒序输出v即使转换后的值for(int i=v....原创 2020-04-06 22:51:01 · 226 阅读 · 0 评论 -
快速幂算法
幂运算是一种常见的运算,最容易想到的累乘法的复杂度为O(n),但很多时候这并不够快,所以出现了快速幂运算。(为什么不用内置函数pow?)有时候幂运算结果特别大,超出了long long的范围,这时候答案会要求你取模,这时候用pow函数是肯定不行的。代码://求x的n次方long long power(long long x,long long n){ long long res ...原创 2020-04-02 12:09:18 · 211 阅读 · 1 评论 -
C++实现二分查找
普通版本:#include<iostream>using namespace std;int binarySearch(int *arr , int low , int high , int target)//递归实现{ int middle = (low + high)/2; if(low > high) return -1; if(arr[middle]...转载 2020-03-25 11:16:27 · 230 阅读 · 0 评论