✔ ★算法基础笔记(Acwing)(一)—— 基础算法(20道题)【java版本】
基础算法
- 一、快速排序
- 1. 快速排序例题
- 2. 第k个数( 快速选择 ) ✔ ✔1.31
- ★快排二刷总结( 4点 )
- 二、归并排序
- 1. 归并排序模板题 ✔ ✔1.31
- ★二刷总结
- ★2. 逆序对的数量 ✔ ✔1.31
- ★二刷总结
- 三、二分
- 1. 数的范围 ✔1.31
- ★二刷总结(mid >= x 则是 输出最左边一个)
- 第一个大于等于x的数 || 最后一个大于等于x的数
- ★2. 数的三次方根 1e-8 ✔1.31
- 二刷总结
- 四、高精度
- 1. 高精度加法 ✔1.31
- BigInteger
- 2. 高精度减法 ✔1.31
- a.subtract(b)
- 3. 高精度乘法
- 4. 高精度除法 ✔(12分钟)2.1
- 五、前缀和S与差分a
- 1. 前缀和(2分钟)
- 2. 子矩阵的和(7分钟)
- 3. 差分(9分钟)
- 二刷总结
- 4. 差分矩阵(12分钟)
- 六、双指针
- ★ 1. 最长连续不重复子序列(20分钟)
- 二刷总结(以空间换时间)
- 2. 数组元素的目标和(7分钟)
- 3. 判断子序列(8分钟)
- 七、二进制
- 1. 位运算算法(2分钟)
- 返回n的最后一位1:lowbit(n) = n & -n
- 一共有多少1 : while n = n ^(n & -n)或者 n -= n & -n
- 八、离散化
- 去重 V.erase(unique(.begin(),.end()),.end());
- 1. ★ 区间和
- 在草稿纸上列出需要几个数组,就清晰了
- 九、区间合并
- 1. 区间合并(7分钟)
一、快速排序
1. 快速排序例题
原题链接
import java.util.*;public class Main {public static void main (String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int[] nums = new int[n];for (int i = 0; i < n; i++) {nums[i] = scanner.nextInt();}quickSort(0,n-1,nums);for (int i=0; i<n; i++) {System.out.print(nums[i] + " ");}}public static void quickSort (int l,int r,int[] nums) {if(l>=r) {return;}int x = nums[(l+r)/2];int i = l - 1,j = r + 1;while (i < j) {while (nums[++i] < x);while (nums[--j] > x);if (i < j) {int t = nums[i];nums[i] = nums[j];nums[j] = t;}}quickSort(l,j,nums);quickSort(j+1,r,nums);}
}
2. 第k个数( 快速选择 ) ✔ ✔1.31
原题链接
import java.util.*;public class Main {public static int k;public static void main (String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();k = scanner.nextInt();int[] nums = new int[n];for (int i = 0; i < n; i++) {nums[i] = scanner.nextInt();}System.out.print(quickSortTheK_thNumber(0,n-1,nums));}public static int quickSortTheK_thNumber (int l,int r,int[] nums) {if (l >= r) {return nums[r];}int x = nums[(l+r)>>1];int i = l - 1, j = r + 1;while (i < j) {while (nums[++i] < x);while (nums[--j] > x);if (i < j) {int t = nums[i];nums[i] = nums[j];nums[j] = t;}}if (j < k-1) {return quickSortTheK_thNumber(j+1,r,nums);} else {return quickSortTheK_thNumber(l,j,nums);}}
}
★快排二刷总结( 4点 )
if (l >= r) return;
- 没有等于号
- 交换有条件
if (i < j) swap(q[i], q[j]);
- 基值要固定
x = q[l + r >> 1]
- j最后的角标表示 l-j 是小于x的
二、归并排序
void merge_sort(int q[], int l, int r)
{if (l >= r) return;int mid = l + r >> 1;merge_sort(q, l, mid);merge_sort(q, mid + 1, r);int k = 0, i = l, j = mid + 1;while (i <= mid && j <= r)if (q[i] <= q[j]) tmp[k ++ ] = q[i ++ ];else tmp[k ++ ] = q[j ++ ];while (i <= mid) tmp[k ++ ] = q[i ++ ];while (j <= r) tmp[k ++ ] = q[j ++ ];for (i = l, j = 0; i <= r; i ++, j ++ ) q[i] = tmp[j];
}
- 先分段
- 用一个额外数组,汇总两个分数组的排序
1. 归并排序模板题 ✔ ✔1.31
★二刷总结
r = mid + 1
- while if
- temp 的k = 1
a 的i = L
原题链接
import java.util.*;public class Main {public static void main (String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int[] nums = new int[n];for (int i = 0; i < n; i++) {nums[i] = scanner.nextInt();}merge_sort(0,n-1,nums);for (int i = 0; i < n; i++) {System.out.print(nums[i] + " ");}}public static void merge_sort (int l,int r,int[] nums) {if (l >= r) {return;}int mid = (l+r) >> 1;int i = l,j = mid + 1;merge_sort(l,mid,nums);merge_sort(mid+1,r,nums);int[] temp = new int[r - l + 1];int k = 0;while (i <= mid && j <= r) {if (nums[i] <= nums[j]) {temp[k++] = nums[i++];} else {temp[k++] = nums[j++];}}while (i <= mid) {temp[k++] = nums[i++];}while (j <= r) {temp[k++] = nums[j++];}for (int q = l,p = 0; q <= r; q++) {nums[q] = temp[p++];}}
}
★2. 逆序对的数量 ✔ ✔1.31
原题链接
★二刷总结
- java中new不能全new
import java.util.*;public class Main {public static long ans = 0;public static void main (String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int[] nums = new int[n];for (int i = 0; i < n; i++) {nums[i] = scanner.nextInt();}numberOfReverseOrderPairs(0,n-1,nums);System.out.print(ans);}public static void numberOfReverseOrderPairs(int l,int r,int[] nums){if (l >= r) {return;}int mid = (l+r)>>1;int i = l,j = mid+1;numberOfReverseOrderPairs(l,mid,nums);numberOfReverseOrderPairs(mid+1,r,nums);int[] temp = new int[r-l+1];int k = 0;while (i <= mid && j <= r) {if (nums[i] <= nums[j]) {temp[k++] = nums[i++];} else {temp[k++] = nums[j++];ans += mid - i + 1;}}while (i <= mid) {temp[k++] = nums[i++];}while (j <= r) {temp[k++] = nums[j++];}for (int q = l,p = 0; q <= r; q++) {nums[q] = temp[p++];}}
}
三、二分
1. 数的范围 ✔1.31
原题链接
★二刷总结(mid >= x 则是 输出最左边一个)
第一个大于等于x的数 || 最后一个大于等于x的数
mid < x 则是 往右
import java.util.*;public class Main {public static void main (String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int m = scanner.nextInt();int[] nums = new int[n];for (int i = 0; i < n; i++) {nums[i] = scanner.nextInt();}for (int i = 0; i < m; i++) {int x = scanner.nextInt();int p = 0,q = 0;int l = 0,r = n-1;while (l < r) {int mid = (l+r)>>1;if (nums[mid] < x) {l = mid+1;} else {r = mid;}}p = r;l = 0;r = n-1;while (l < r) {int mid = (l+r+1)>>1;if (nums[mid] <= x) {l = mid;} else {r = mid - 1;}}q = r;if (nums[q] != x) {System.out.println(-1 + " " + -1); } else {System.out.println(p + " " + q);}}}
}
★2. 数的三次方根 1e-8 ✔1.31
原题链接
二刷总结
- 精确度是1e-8
- l或者r直接等于mid
import java.util.*;public class Main {public static void main (String[] args) {Scanner scanner = new Scanner(System.in);double n = scanner.nextDouble();double l = (double)-1e5;double r = 1e5*1.0;while (r - l > 1e-8) {double mid = (l+r)/2;if (mid * mid * mid <= n) {l = mid;} else {r = mid;}}System.out.printf("%.6f",l);}
}
四、高精度
1. 高精度加法 ✔1.31
原题链接
二刷:
- 因为先计算小数,所以先把小数入 vector
- 存放的时候先存放小数,这样i 一个角标就可以作为两个数的运算位置进行运算,如果相反的话,因为需要先计算最小值,那么就需要用两个角标指向最小值了
BigInteger
import java.io.BufferedInputStream;
import java.math.BigInteger;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);BigInteger a = scanner.nextBigInteger();BigInteger b = scanner.nextBigInteger();System.out.println(a.add(b));scanner.close();}}
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String s1 = scanner.next();String s2 = scanner.next();List<Integer> A = new ArrayList<>(s1.length());List<Integer> B = new ArrayList<>(s2.length());for (int i = s1.length() - 1; i >= 0; i--) A.add(s1.charAt(i) - '0');for (int i = s2.length() - 1; i >= 0; i--) B.add(s2.charAt(i) - '0');List<Integer> C = add(A, B);for (int i = C.size() - 1; i >= 0; i--) System.out.printf(C.get(i) + "");}private static List<Integer> add(List<Integer> A, List<Integer> B) {List<Integer>C=new ArrayList<>(Math.max(A.size(),B.size())+2);int t=0;for(int i=0;i<A.size() || i<B.size();i++){if(i<A.size())t+=A.get(i);if(i<B.size())t+=B.get(i);C.add(t%10);t/=10;}if(t!=0) C.add(t);return C;}
}
2. 高精度减法 ✔1.31
原题链接
二刷:
- 小减大 需要转换成 大-小
- 如果出现负数 (x+10)%10 t = 1不是-1
- t = a[i] - t; t = t - b[i]
a.subtract(b)
import java.io.*;
import java.math.BigInteger;public class Main {public static void main(String[] args) throws IOException{BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));BigInteger a = new BigInteger(reader.readLine());BigInteger b = new BigInteger(reader.readLine());System.out.println(a.subtract(b));reader.close();}
}
import java.util.Scanner;
import java.util.List;
import java.util.ArrayList;public class Main{public static void main(String[] args){Scanner scanner = new Scanner(System.in);String s1 = scanner.next();String s2 = scanner.next();List<Integer> A = new ArrayList<>();List<Integer> B = new ArrayList<>();for(int i = s1.length() - 1;i >= 0;i --) A.add(s1.charAt(i) - '0');for(int i = s2.length() - 1;i >= 0; i --) B.add(s2.charAt(i) - '0');if(!cmp(A,B)){System.out.print("-");}List<Integer> C = sub(A,B);for(int i = C.size() - 1;i >= 0; i --){System.out.print(C.get(i));}}public static List<Integer> sub(List<Integer> A,List<Integer> B){if(!cmp(A,B)){return sub(B,A);}List<Integer> C = new ArrayList<>();int t = 0;for(int i = 0;i < A.size();i ++){//这里应该是A.get(i) - B.get(i) - t ,因为可能B为零,所以需要判断一下是不是存在t = A.get(i) - t;if(i < B.size()) t -= B.get(i);C.add((t + 10) % 10);if(t < 0) t = 1;else t = 0;}//删除指定下标下面的值while(C.size() > 1 && C.get(C.size() - 1) == 0) C.remove(C.size() - 1);return C;}public static boolean cmp(List<Integer> A,List<Integer> B){if(A.size() != B.size()) return A.size() > B.size();/* if(A.size() >= B.size()){return true;}else{return false;}*/for(int i = A.size() - 1;i >= 0;i --){if(A.get(i) != B.get(i)) {return A.get(i) > B.get(i);}}return true;}
}
3. 高精度乘法
二刷:
- 在草稿纸上演算一遍 运算过程,便知道 代码逻辑
原题链接
import java.util.*;public class Main {public static void main (String[] args) {Scanner scanner = new Scanner(System.in);String a = scanner.next();int b = scanner.nextInt();List<Integer> A = new ArrayList<>(a.length());for (int i = a.length()-1; i >= 0; i--) A.add(a.charAt(i) - '0');List<Integer> C = mul(A,b);for (int i = C.size()-1; i >= 0; i--) System.out.print(C.get(i));}public static List<Integer> mul (List<Integer> A,int b) {List<Integer> C = new ArrayList<>(A.size());int t = 0;for (int i = 0; i < A.size(); i++) {t = t + A.get(i)*b;C.add(t%10);t /= 10;}while (t != 0) {C.add(t%10);t /= 10;}while (C.size() > 1 && C.get(C.size()-1) == 0) {C.remove(C.size() - 1);}return C;}
}
4. 高精度除法 ✔(12分钟)2.1
原题链接
#include <iostream>
#include <vector>
#include <algorithm>using namespace std;vector<int> div(vector<int> &A, int b, int &r)
{vector<int> C;r = 0;for (int i = A.size() - 1; i >= 0; i -- ){r = r * 10 + A[i];C.push_back(r / b);r %= b;}reverse(C.begin(), C.end());while (C.size() > 1 && C.back() == 0) C.pop_back();return C;
}int main()
{string a;vector<int> A;int B;cin >> a >> B;for (int i = a.size() - 1; i >= 0; i -- ) A.push_back(a[i] - '0');int r;auto C = div(A, B, r);for (int i = C.size() - 1; i >= 0; i -- ) cout << C[i];cout << endl << r << endl;return 0;
}
五、前缀和S与差分a
1. 前缀和(2分钟)
原题链接
import java.util.*;public class Main {public static void main (String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int m = scanner.nextInt();int[] a = new int[n+1];int[] s = new int[n+1];for (int i = 1; i <= n; i++) { a[i] = scanner.nextInt(); }s[1] = a[1];for (int i = 2; i <= n; i++) {s[i] = a[i] + s[i-1];}while (m-- != 0) {int l = scanner.nextInt();int r = scanner.nextInt();System.out.println(s[r]-s[l-1]);}}
}
2. 子矩阵的和(7分钟)
原题链接
import java.util.*;public class Main {public static void main (String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int m = scanner.nextInt();int q = scanner.nextInt();int[][] a = new int[n+1][m+1];int[][] s = new int[n+1][m+1];for (int i = 1; i <= n; i++){for (int j = 1; j <= m; j++) {a[i][j] = scanner.nextInt();} }for(int i = 1 ; i <= n ; i ++ ){for(int j = 1 ;j <= m ; j ++ ){s[i][j] = s[i-1][j] + s[i][j-1] - s[i-1][j-1] + a[i][j];}}while (q-->0) {int x1 = scanner.nextInt();int y1 = scanner.nextInt();int x2 = scanner.nextInt();int y2 = scanner.nextInt();System.out.println(s[x2][y2] - s[x1-1][y2] - s[x2][y1-1] + s[x1-1][y1-1]);}}
}
3. 差分(9分钟)
二刷总结
- 由差分求s时,是要有数据连续性的,前面的改变了,要保证对应后面的也跟着
原题链接
import java.util.*;public class Main {public static void main (String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int m = scanner.nextInt();int[] nums = new int[n+2];for (int i = 1; i <= n; i++) {nums[i] = scanner.nextInt();}for (int i = n; i >= 1; i--) {nums[i] = nums[i]-nums[i-1];}for (int i = 0; i < m; i++) {int l = scanner.nextInt();int r = scanner.nextInt();int c = scanner.nextInt();nums[l] += c;nums[r+1] -= c;}for (int i = 1; i <= n; i++) {nums[i] += nums[i-1];System.out.printf("%d ",nums[i]);}}
}
4. 差分矩阵(12分钟)
原题链接
import java.util.*;public class Main {public static void main (String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int m = scanner.nextInt();int q = scanner.nextInt();int[][] splits = new int[n+2][m+2];int[][] sum = new int[n+2][m+2];for (int i = 1; i <= n; i++) {for(int j = 1; j <= m; j++) {sum[i][j] = scanner.nextInt();splits[i][j] = sum[i][j] - sum[i-1][j] - sum[i][j-1] + sum[i-1][j-1];}}for (int i = 0; i < q; i++) {int x1 = scanner.nextInt();int y1 = scanner.nextInt();int x2 = scanner.nextInt();int y2 = scanner.nextInt();int c = scanner.nextInt();splits[x1][y1] += c;splits[x1][y2+1] -= c;splits[x2+1][y1] -= c;splits[x2+1][y2+1] += c;}for (int i = 1; i <= n; i++) {for (int j = 1; j <= m; j++) {sum[i][j] = splits[i][j] + sum[i-1][j] + sum[i][j-1] - sum[i-1][j-1];System.out.print(sum[i][j] + " ");}System.out.println();}}
}
六、双指针
★ 1. 最长连续不重复子序列(20分钟)
二刷总结(以空间换时间)
原题链接
import java.util.Scanner;
public class Main {public static void main(String[] args){Scanner scan = new Scanner(System.in);int n = scan.nextInt();int[] a = new int[100010];int[] s = new int[100010];for(int i = 0 ; i < n ; i ++ ){a[i] = scan.nextInt();}int res = 0;for(int i = 0 , j = 0 ;i < n ; i ++ ){//比如一开始S[2]是0;然后你的a[1] = 2;那么s[2] = 1;//然后如果a[2] = 2 ;那么第二次出现所以s[2] = 2;这样来证明是不是出现两次s[a[i]] ++ ;while(j < i && s[a[i]] > 1){//一开始j是跟i在同个位置,i在移动,j原地不动,只要上面出现两次,j开始移动//j移动到i的位置,下面的代码就是i走过的路,让s[i] 数组里面加1的位置全部减1,就变回0;所以就继续往下统计长度s[a[j]] -- ;j++;}//i-j+1是统计长度的公式;res = Math.max(res, i-j+1);}System.out.println(res);}
}//这里填你的代码^^
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~
2. 数组元素的目标和(7分钟)
原题链接
import java.util.*;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int m = scanner.nextInt();int x = scanner.nextInt();int[] A = new int[n+1];int[] B = new int[m+1];for (int i = 0; i < n; i++) A[i] = scanner.nextInt();for (int i = 0; i < m; i++) B[i] = scanner.nextInt();for (int i = 0,j = m-1; i < n && j >= 0;) {if (A[i] + B[j] < x) {i++;} else if (A[i] + B[j] == x) {System.out.print(i + " " + j);break;} else {j--;}}}
}
3. 判断子序列(8分钟)
原题链接
import java.util.*;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int m = scanner.nextInt();int[] a = new int[n+1];int[] b = new int[m+1];for (int i = 0; i < n; i++) a[i] = scanner.nextInt();for (int j = 0; j < m; j++) b[j] = scanner.nextInt();boolean flag = false;for (int i = 0,j = 0; j < m; j++) {if (a[i] == b[j]) {i++;if (i == n) {System.out.print("Yes");flag = true;break;}}}if (flag == false) {System.out.print("No");}}
}
七、二进制
最全二进制算法总结
1. 位运算算法(2分钟)
返回n的最后一位1:lowbit(n) = n & -n
一共有多少1 : while n = n ^(n & -n)或者 n -= n & -n
原题链接
import java.util.*;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int[] nums = new int[n];for (int i = 0; i < n; i++) {nums[i] = scanner.nextInt();System.out.print(numberOfOneInBinary(nums[i]) + " ");}}public static int numberOfOneInBinary(int num) {int cnt = 0;while (num != 0) {num -= (num & -num);cnt++;}return cnt;}
}
八、离散化
sort(alls.begin(),alls.end());
alls.erase(unique(alls.begin(),alls.end()),alls.end());
去重 V.erase(unique(.begin(),.end()),.end());
1. ★ 区间和
原题链接
在草稿纸上列出需要几个数组,就清晰了
import java.util.*;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int m = scanner.nextInt();pair[] add = new pair[n+2];pair[] query = new pair[m];List<Integer> arrayMap = new ArrayList<>(n+m*2);int[] sum = new int[n+m*2];for (int i = 0; i < n; i++) {add[i] = new pair();add[i].l = scanner.nextInt();add[i].r = scanner.nextInt();arrayMap.add(add[i].l);}for (int i = 0; i < m; i++) {query[i] = new pair();query[i].l = scanner.nextInt();query[i].r = scanner.nextInt();arrayMap.add(query[i].l);arrayMap.add(query[i].r);}arrayMap = new ArrayList<>(new HashSet<>(arrayMap));Collections.sort(arrayMap);for (int i = 0; i < n; i++) {sum[arrayMapIndexOf(add[i].l,arrayMap)] += add[i].r;}for (int i = 0; i < arrayMap.size(); i++) {if(i != 0) {sum[i] += sum[i-1];}}for (int i = 0; i < query.length; i++) {int l = arrayMapIndexOf(query[i].l,arrayMap);int r = arrayMapIndexOf(query[i].r,arrayMap);if (l == 0) {System.out.print(sum[r] + "\n");} else {System.out.print(sum[r]-sum[l-1] + "\n");}}}static class pair {int l;int r;}private static int arrayMapIndexOf(int k,List<Integer> arrayMap) {int l = 0,r = arrayMap.size()-1;while (l < r) {int mid = (l+r+1) >> 1;if (arrayMap.get(mid) <= k) {l = mid;} else {r = mid - 1;}}return r;}
}
九、区间合并
1. 区间合并(7分钟)
原题链接
贪心做法
import java.util.*;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();pair[] range = new pair[n];for (int i = 0; i < n; i++) {range[i] = new pair();range[i].l = scanner.nextInt();range[i].r = scanner.nextInt();}Arrays.sort(range,new Comparator<pair>(){@Overridepublic int compare(pair o1,pair o2) {if (o1.l == o2.l) {return o1.r - o2.r;} else {return o1.l - o2.l;}}});int st = (int)-2e9-1;int ed = (int)-2e9-1;int cnt = 0;for (int i = 0; i < n; i++) {if (ed < range[i].l) {st = range[i].l;ed = range[i].r;cnt++;} else {ed = Math.max(ed,range[i].r);}}System.out.print(cnt);}static class pair {int l;int r;}}
相关文章:
![](https://img-blog.csdnimg.cn/0309ca6549b842e18f5d7e48be0d9313.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA55-l6KGM5ZCI5LiA77yM5rWp,size_20,color_FFFFFF,t_70,g_se,x_16)
✔ ★算法基础笔记(Acwing)(一)—— 基础算法(20道题)【java版本】
基础算法 一、快速排序1. 快速排序例题2. 第k个数( 快速选择 ) ✔ ✔1.31★快排二刷总结( 4点 ) 二、归并排序1. 归并排序模板题 ✔ ✔1.31★二刷总结 ★2. 逆序对的数量 ✔ ✔1.31★二刷总结 三、二分1. 数的范围 ✔1.31★二刷总结(mid > x 则是 输出最左边一个)第一个大于…...
![](https://www.ngui.cc/images/no-images.jpg)
简单记录下gin中使用中间件记录操作日志
1、直接定义中间件package middlewareimport ("bytes""encoding/json""fmt""github.com/gin-gonic/gin""go.uber.org/zap""io""strconv""strings" )func LoggerMiddleWare() gin.HandlerFunc…...
![](https://img-blog.csdnimg.cn/001c5594f8174d2ab1f7067dc9258d52.png)
基于Matlab利用IRM和RRTstar实现无人机路径规划(附上源码+数据+说明+报告+PPT)
无人机路径规划是无人机应用领域中的关键问题之一。本文提出了一种基于IRM(Informed RRTstar Method)和RRTstar(Rapidly-exploring Random Tree star)算法的无人机路径规划方法,并使用Matlab进行实现。该方法通过结合I…...
![](https://img-blog.csdnimg.cn/e74366d12a794d558b6ab22b06a77990.png)
uniapp使用@microsoft/signalr(报错“ReferenceError: require is not defined“)
后台老哥要用微软的signalr,总结了一些经验和问题 引入方法 1、npm npm i microsoft/signalr 2、下载他的js或者cdn <script src"https://cdnjs.cloudflare.com/ajax/libs/microsoft-signalr/6.0.1/signalr.js"></script>在uniapp中&…...
![](https://img-blog.csdnimg.cn/c795fb9ba8864c4ead354b378e38dfa5.png#pic_center)
CloudCompare 二次开发(9)——半径滤波
目录 一、概述二、代码集成三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、概述 使用CloudCompare与PCL的混合编程实现点云半径滤波。半径滤波的算法原理见:PCL 半径滤波器。基于PCL将半径滤波集成到Cl…...
![](https://www.ngui.cc/images/no-images.jpg)
ElementUI浅尝辄止29:Breadcrumb 面包屑
显示当前页面的路径,快速返回之前的任意页面。 1.如何使用? 在el-breadcrumb中使用el-breadcrumb-item标签表示从首页开始的每一级。Element 提供了一个separator属性,在el-breadcrumb标签中设置它来决定分隔符,它只能是字符串&am…...
![](https://img-blog.csdnimg.cn/2799ee023f5242b38bc336ef09417491.jpeg)
ABB MPRC086444-005数字输入模块
ABB MPRC086444-005 是一款数字输入模块,通常用于工业自动化和控制系统中,用于接收和处理数字信号。以下是这种类型的数字输入模块通常可能具备的一般功能和特点: 数字输入接口:MPRC086444-005 模块通常配备多个数字输入通道&…...
![](https://img-blog.csdnimg.cn/8d4e8c159ea54a3199ced1aaec9fd5d8.png)
stable diffusion实践操作-常见lora模型介绍
系列文章目录 本文专门开一节写Lora相关的内容,在看之前,可以同步关注: stable diffusion实践操作 文章目录 系列文章目录前言一、什么是lora?1.1 lora 定义1.2 lora的基本原理1.2 通过分层控制lora 二、作用:2.1 复刻人物特征2…...
![](https://img-blog.csdnimg.cn/2997448d788e48348aa516c759ceb408.png)
kubeadm 安装k8s
目录 安装k8s 环境准备 所有节点,关闭防火墙规则,关闭selinux,关闭swap交换(必须关闭swap分区) //修改主机名 //所有节点修改hosts文件 //调整内核参数 所有节点安装docker 所有节点安装kubeadm,kube…...
![](https://img-blog.csdnimg.cn/4a76c1c1eaa94dc7920895cdd0852344.jpeg)
选择最适合您的Bug管理软件:市场比较与推荐
“Bug管理软件哪家好?市场上有许多优秀的Bug管理系统品牌如:Zoho Projects、JIRA、Redmine、Bugzilla、MantisBT。” 一款高效的Bug管理系统可以帮助团队更有效地发现、记录和解决软件中的问题,从而提高产品质量和用户满意度。本文将为您介绍…...
![](https://img-blog.csdnimg.cn/250c09c7f0b343e98c93796fb58bcf3e.png)
Spring MVC的常用注解及用法
Spring MVC的执行流程: 1.用户的请求首先到Controller 2.Controller将请求转发给Model 3.Model处理业务并将数据结果给Controller 4.Controller会将数据给View引擎 5.View转换数据生成最终的页面给用户。 常用注解: 1.requestMapping:…...
![](https://www.ngui.cc/images/no-images.jpg)
HTTP和HTTPS的区别、 HTTPS运行原理
HTTP 一种用于web浏览器和web服务器基于数据传递的协议基于TCP/IP协议的应用层传送,用于客户端和服务器之间的数据交互 HTTPS 是HTTP的安全版,基于SSL或TLS协议,对客户端和服务器之间加密和身份验证,使得数据之间传递具有了安全…...
![](https://www.ngui.cc/images/no-images.jpg)
统计封闭岛屿的数目
1254. 统计封闭岛屿的数目 关于岛屿的相似题目: 岛屿数量 – 二维矩阵的dfs算法封闭岛屿数量 – 二维矩阵的dfs算法统计封闭岛屿的数目统计子岛屿不同岛屿的数量 class MaxAreaOfIsland:"""floodFill 算法1254. 统计封闭岛屿的数目https://leetcod…...
![](https://img-blog.csdnimg.cn/568a8b23cb6d4194b0ada1a66bb619cc.png)
【数据结构与算法系列4】长度最小的子数组
给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, numsr] ,并返回其长度**。**如果不存在符合条件的子数组,返回 0 。 示例 1: 输入&…...
![](https://img-blog.csdnimg.cn/e8e0e2e87dfc42849d764091d9715972.png)
问道管理:底部渐渐抬高 今年反弹时刻或已来临
快速探底后,两市呈现分解走势。 沪指周三低开震动,指数在20日均线取得支撑后小幅上升,最终以红盘报收。深成指走势弱于沪指,尽管午后指数有所上升,但最终未能翻红。到收盘,沪指报收3158.08点,上…...
![](https://img-blog.csdnimg.cn/38c8aa73a3f74b98861f6c437018bdad.jpeg)
正规黄金代理的三大要素
对于现货黄金投资来说,寻找一个正规的黄金代理是十分重要的问题。在目前的现货黄金投资市场中,现货黄金代理的数量很多,他们都致力于耕耘现货黄金投资市场。当越来越多的专业人士加入到现货黄金投资的市场中当中时,这个市场将会越…...
![](https://img-blog.csdnimg.cn/183e7106a6af422fb2104492fdf66ea9.png)
Spine2D骨骼动画播放器 - 微信小程序版
Spine2D骨骼动画播放器 - 微信小程序版 简介平台支持 界面预览使用说明演示视频 版本笨笨的小目标(废话)参考资料测试文件百度盘分享 相关文档 简介 本播放器是SpinePlayer的微信小程序版。由于官方并没有提供现成的运行库,只能自己改造。 设…...
![](https://img-blog.csdnimg.cn/img_convert/c2758334fd01b4b51f7281c8b5de64fe.gif)
蓝天转债,双良转债上市价格预测
蓝天转债111017 基本信息 转债名称:蓝天转债,评级:AA,发行规模:8.7亿元。 正股名称:蓝天燃气,今日收盘价:9.74元,转股价格:10.13元。 当前转股价值 转债面值…...
![](https://img-blog.csdnimg.cn/5d20f3da5e34430c9e7ebf0c6551296e.png)
python-爬虫-xpath方法-批量爬取王者皮肤图片
import requests from lxml import etree获取NBA成员信息 # 发送的地址 url https://nba.hupu.com/stats/players # UA 伪装 google header {User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.3…...
![](https://img-blog.csdnimg.cn/2bbe0deb3c8b4f9d9a767d4c978ff9e9.png)
go锁--读写锁
每个锁分为读锁和写锁,写锁互斥 没有加写锁时,多个协程都可以加读锁 加了写锁时,无法加读锁,读协程排队等待 加了读锁,写锁排队等待 Mutex用来写协程之间互斥等待 读协程使用readerSem等待写锁的释放 写协程使用writer…...
![](https://img-blog.csdnimg.cn/73f37b9362e24598ab0c0e5ee38df702.png)
Unity中Shader的屏幕坐标
文章目录 前言一、屏幕坐标1、屏幕像素的坐标2、屏幕坐标归一化 二、在Unity中获取 当前屏幕像素 和 总像素1、获取屏幕总像素,使用_ScreenParams参数2、获取当前片段上的像素怎么使用:在片元着色器传入参数时使用 前言 Unity中Shader的屏幕坐标 一、屏幕坐标 1、屏幕像素的坐…...
![](https://img-blog.csdnimg.cn/88ca35636ac34fb0bb9fd19d03ec0942.png)
springboot MongoDB 主从 多数据源
上一篇,我写了关于用一个map管理mongodb多个数据源(每个数据源,只有单例)的内容。 springboot mongodb 配置多数据源 临到部署到阿里云的测试环境,发现还需要考虑一下主从的问题,阿里云买的数据库&#x…...
![](https://img-blog.csdnimg.cn/bb6cbc39205a48d7892dbce475fecb10.png)
【100天精通Python】Day57:Python 数据分析_Pandas数据描述性统计,分组聚合,数据透视表和相关性分析
目录 1 描述性统计(Descriptive Statistics) 2 数据分组和聚合 3 数据透视表 4 相关性分析 1 描述性统计(Descriptive Statistics) 描述性统计是一种用于汇总和理解数据集的方法,它提供了关于数据分布、集中趋势和…...
![](https://img-blog.csdnimg.cn/b108f697b56044198c2eea61ebf63e1a.png#pic_cnter)
Unity 切换场景后场景变暗
问题 Unity版本:2019.4.34f1c1 主场景只有UI,没有灯光,天空盒;其他场景有灯光和天空盒所有场景不烘焙主场景作为启动场景运行,切换到其他场景,场景变暗某一个场景作为启动场景运行,光影效果正…...
![](https://img-blog.csdnimg.cn/img_convert/6b6e2a22805e4026afe49df7f8dc107b.png)
RabbitMQ学习笔记
1、什么是MQ? MQ全称message queue(消息队列),本质是一个队列,FIFO先进先出,是消息传送过程中保存消息的容器,多 用于分布式系统之间进行通信。 在互联网架构中,MQ是一种非常常见的…...
![](https://www.ngui.cc/images/no-images.jpg)
【C# Programming】类、构造器、静态成员
一、类 1、类的概念 类是现实世界概念的抽象:封装、继承、多态数据成员: 类中存储数据的变量成员方法: 类中操纵数据成员的函数称为成员方法对象:类的实例类定义 class X {…} var instance new X(…); 2、实例字段 C#中…...
![](https://www.ngui.cc/images/no-images.jpg)
软件层面缓存基本概念与分类
缓存 缓存基本概念(百度百科) 缓存(cache),原始意义是指访问速度比一般随机存取存储器(RAM)快的一种高速存储器,通常它不像系统主存那样使用DRAM技术,而使用昂贵但较快…...
![](https://img-blog.csdnimg.cn/af3cdfbeeef144558bb34800ad3d3ba2.png)
单片机有哪些分类?
单片机有哪些分类? 1.AVR单片机-----速度快,一个时钟周期执行一条指令,而普通的51单片机需要12个时钟周期执行一条指令。当然,Atmel公司出品的AT89LP系列单片机也是一个时钟执行一条指令,但目前还未普及。AVR单片机比51单片机多…...
![](https://img-blog.csdnimg.cn/e84bbe00ef174ae584aee5f0b021d7b6.jpeg)
高阶数据结构-----三种平衡树的实现以及原理(未完成)
TreeMap和TreeSet的底层实现原理就是红黑树 一)AVL树: 1)必须是一棵搜索树:前提是二叉树,任取一个节点,它的左孩子的Key小于父亲节点的Key小于右孩子节点的Key,中序遍历是有序的,按照Key的大小进行排列,高度平衡的二叉…...
![](https://img-blog.csdnimg.cn/de6b0c14610f486e98659d52b1212111.png)
北斗高精度组合导航终端
UWB(Ultra-Wideband)、卫星定位(GNSS),以及IMU(Inertial Measurement Unit)的组合定位系统结合了多种传感器和定位技术,以提供高精度、高可靠性的位置估计。这种组合定位系统在各种应…...
![](https://img-blog.csdnimg.cn/20210208175100275.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjQ1NDA0OA==,size_16,color_FFFFFF,t_70)
河间哪里有做网站的/广州最新疫情通报
1 问题 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。 示例 1: 给定二叉树 [3,9,20,null,null,15,7] 返回 true 。 示例 2: 给定二叉树…...
![](/images/no-images.jpg)
网站开发的三层架构/长春网络优化哪个公司在做
值栈包含两个 context(域对象框架存入) 和根对象(push,set) //源码dofilter----actionContext push通过压栈后的数据是在最顶层,用 value"top" 来取值即可; 值栈后进先出的原则 set和map的混到一起 从上到下取值;[0].name; set一般是集合;push一般是属性 1.获取值…...
衡水建设局网站首页/视频推广一条多少钱
letswave教程:脑电数据图形绘制、批处理以及脚本生成1 单主题图形生成1.1 打开图形模块1.2 创建子图1.3 添加内容1.4 设置轴参数1.5 导出图形2 多主题图形生成2.1 打开图形模块2.2 创建子图2.3 添加内容2.4 设置轴参数3 批处理3.1 数据导入3.2 删除无用的通道3.3 过…...
![](http://top.oa.com/pictures/201209/1347276387_34.png)
大连网站开发企业/宁波网站推广营销
1. Php图片上传12. PHP函数getimagesize的具体使用方法4 3. 异步上传图片5 1. Php图片上传 上传步骤: 1、创建一个文件上传表单 <html> <body> <form action"upload_file.php" method"post" enctype"multipart/form-data&q…...
![](/images/no-images.jpg)
dw怎么做网站首页/百度网址提交入口
个人认为在自己写接口时,需要返回集合时返回一个空集合,比如mybatis查询如果返回一个集合,结果为空时也会返回一个空集合而不是null。那么这样有什么好处呢?最大的好处就是调用方不用在判断是否为null,可以直接用&…...
![](/images/no-images.jpg)
如何给自己做网站/关键词排名优化如何
java里初始化一个类的对象,通过初始化快或者构造方法进行数据赋值。与其相关的执行代码有这么几种: 静态初始化块初始化块构造方法静态初始化块 静态初始化块只在类加载时执行一次,同时静态初始化块只能给静态变量赋值,不能初始化…...