acwing
chuxuezhe8483
道阻且长、行则将至
展开
-
反转链表题解
题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。思考题:请同时实现迭代版本和递归版本。代码实现://迭代解法class Solution {public: ListNode* reverseList(ListNode* head) { ListNode* pre = nullptr; ListNode* cur = head; while(cur){ ListNode* next =原创 2022-03-30 13:19:27 · 86 阅读 · 0 评论 -
786 第K个数
#786 第K个数快排模板题思路解析:代码实现#include<iostream>#include<algorithm>using namespace std;const int N = 100010;int a[N];int quickfind(int l,int r,int k){ if(l >= r) return a[r]; int i = l - 1,j = r + 1,x = a[l + r >> 1];//取mid原创 2022-03-30 11:22:36 · 48 阅读 · 0 评论 -
之字形打印二叉树
之字形打印二叉树算法(BFS) O(n)宽度优先遍历,一层一层来做。即:将根节点插入队列中;创建一个新队列,用来按顺序保存下一层的所有子节点;对于当前队列中的所有节点,按顺序依次将儿子插入新队列;按从左到右、从右到左的顺序交替保存队列中节点的值;利用flag判断是否需要翻转重复步骤2-4,直到队列为空为止。时间复杂度树中每个节点仅会进队出队一次,所以时间复杂度是 O(n)代码实现:/** * Definition for a binary tree node. * st.原创 2022-03-30 10:47:42 · 87 阅读 · 0 评论 -
数论算数基本定理的应用
数论相关知识1、算数基本定理(唯一分解定理) 1、内容任何一个大于1的自然数 ,如果N不为质数,都可以唯一分解成有限个质数的乘积,这里均为质数,其诸指数是正整数。2、唯一分解定理具有: ①唯一性(分配方式的唯一性) ②存在性3、常见应用 多重集合的排列数问题2、操作分解质因数—>优化:筛法求素数(线性筛法)目标:1~n中所有的质数以及每...原创 2020-04-14 09:44:27 · 258 阅读 · 0 评论 -
AcWing 1239. 乘积最大
AcWing 1239. 乘积最大1、题目分析如果k==n,数字全选若k<nk是偶数,结果一定是非负数,原因如下负数为奇数个,成对选绝对值最大的负数相乘负数为偶数个,负负得正k是奇数全是负数,结果是负数(从右往左选k个)否则数组中必定存在一个非负数,选择最大的非负数,还剩k–(偶数)剩下k–个数,转化为1中k是偶数情况规律:只有当k是奇数时,选取...转载 2020-04-10 22:39:49 · 111 阅读 · 0 评论 -
中位数在贪心算法中的应用
AcWing 104. 货仓选址1、分析排序+中位数这道题目中,每一个点到中位数的距离,都是满足全局的最有性,而不是局部最优性。!2、代码实现#include <bits/stdc++.h>using namespace std;const int N=100100;int a[N],n,i,ans,sum;int main(){ cin>>...转载 2020-04-10 20:09:23 · 302 阅读 · 0 评论 -
线段树
操作:操作1: 单点修改 O(log n)操作2:取件查询 O(log n)对于节点x父节点:(x/2) x>>1左儿子:2x x<<1右儿子: 2x+1 x<<1 | 1构造核心函数:1、pushup(u):用子节点信息来更新当前节点信息(把信息往上传递)2、build(u,l,r):在一段区间上初始化线段树,其中u表示根结点,l表...原创 2020-04-06 17:41:29 · 73 阅读 · 0 评论 -
1265. 数星星
分析:这道题考的是树状数组的应用题目要求求某一个点(x,y)左下方星星的个数(不包括自己),且星星按y坐标增序给出,y 坐标相同的按x坐标增序给出,因此对于每个新来的点(x,y),y是当前纵坐标的最大值,只需要求[1,x]中星星出现的数量即可每次新来的点,进行树状数组的单点修改操作注意:树状数组的下标都是从1开始,题目中x的范围【0,32000】因此将x变为x+1,相对位置不变代...原创 2020-04-06 11:56:23 · 134 阅读 · 0 评论 -
AcWing 1231. 航班时间
题目分析:飞机在飞,由于人为规定的时区导致好像时间变慢或者快了(实际上没有)。这里很像我们高中物理学的运动学知识,我们可以假设一个场景——船在不平静水面行驶,船从一个点出发行驶了s路程后返回原点(期间船速不变),然后告诉我们来回整个过程回到原点的时间是t,问船在静水中行驶s路程需要多长时间。我们可以以水为参考系,那么显然这个时间为 t/2。这道题本身不难想出思路,但是里面字符串的读写比较麻烦...原创 2020-03-21 17:32:32 · 120 阅读 · 0 评论