posted @ 2023-03-29 21:39 lyc2002 阅读(59) 评论(0) 推荐(0) 编辑
摘要:
能解决什么问题? 需求:在给定数组中找目标值,返回目标值所在下标 方案一:返回 magic number,-1 表示给定数组不存在目标值,>= 0 表示目标值的下标 int find_target(int arr[], size_t sz, int tar); 方案二:返回 pair,bool 指示 阅读全文
摘要:
快速排序 算法思想 找一个主元 x 从左边找 >= x 的数,从右边找 <= x 的数然后交换位置 递归地处理左右两部分 时间复杂度 O(n logn) 代码 void quick_sort(int q[], int l, int r) { if (l >= r) return; int i = l 阅读全文
posted @ 2023-03-21 21:09 lyc2002 阅读(13) 评论(0) 推荐(0) 编辑
摘要:
[acwing]3421.异或数列 /* A ^ B = X1 ^ X2 ^ ... ^ Xn 如果结果为 0,说明 A == B,平局 如果结果不为 0,只需要看结果的二进制形式最高位的 1 是谁拿到的 one[i] 记录所有 X 中位 i 为 1 的个数 zero[i] 记录所有 X 中位 i 阅读全文
posted @ 2023-03-16 21:25 lyc2002 阅读(20) 评论(0) 推荐(0) 编辑
摘要:
求组合数 typedef long long LL; // 最大 C(66, 33) LL C(int a, int b) { LL res = 1; for (int i = a, j = 1; j <= b; i--, j++) { res = res * i / j; } return res 阅读全文
posted @ 2023-03-14 23:03 lyc2002 阅读(10) 评论(0) 推荐(0) 编辑
摘要:
快速得到一个数字的位数 int len = to_string(num).size(); 有限制的选择问题就是背包问题 无向边才可用并查集来做,有向边不行 阅读全文
posted @ 2023-03-12 18:13 lyc2002 阅读(19) 评论(0) 推荐(0) 编辑
摘要:
拉链法 const int N = 100003; // 一般取数的个数的下一个质数 int h[N], e[N], ne[N], idx; memset(h, -1, sizeof(h)); // 添加一个数 void add(int x) { int k = (x % N + N) % N; e 阅读全文
posted @ 2023-03-11 21:14 lyc2002 阅读(16) 评论(0) 推荐(0) 编辑
摘要:
![](https://img2023.cnblogs.com/blog/2715571/202303/2715571-20230307205256604-546504558.png) 阅读全文
posted @ 2023-03-07 20:53 lyc2002 阅读(176) 评论(0) 推荐(0) 编辑
摘要:
[acwing]1222.密码脱落 /* 有多少个前后不配对的字符,就说明脱落了多少个,即总长度减去回文子序列的长度 dp[i][j] 表示 str[i, j] 的最长回文子序列的长度 如果 str[i] == str[j],dp[i][j] = dp[i + 1][j - 1] + 2 否则,dp 阅读全文
posted @ 2023-03-02 17:48 lyc2002 阅读(11) 评论(0) 推荐(0) 编辑