3.双指针法(新手推荐) 第一步:定义两根指针cur和prev,初始位置如下图所示: 第二步:cur开始往后走,如果遇到比key小的值,则++prev,然后交换prev和cur指向的元素,再++cur,如果遇到比key大的值,则只++cur。 第三步:当cur访问过最后一个元素后,将key的元素与prve访问的元素交换位置。cur访问完整个数组后的各元...
inttake_x(intq[],intleft,intright){if(q[left]>q[(left+right)/2])swap(q[left],q[(left+right)/2]);if(q[left]>q[right])swap(q[left],q[right]);if(q[(left+right)/2]>q[right])swap(q[(left+right)/2],q[right]);returnq[(left+right)/2];} 第二步:利用双指针处理数组左...
C. Match Points(排序&双指针) 考虑排序后,如何贪心最优。 因为要尽可能匹配多,所以一个指针指向a n a_nan,最多匹配n 2 \dfrac{n}{2}2n对,所以另一个指针指向n 2 \dfrac{n}{2}2n。 int n,z,s; int a[N]; int main(){ scanf("%d%d",&n,&z); for(int i=1;i<=n;i++)...
1 <= drinks.length <= 10^5 方法一:排序+双指针 这题第一感觉就是排序,固定 staple 的某个位置,然后从后往前遍历 drinks,找到符合条件的最后一个位置 j,对答案的贡献就是 j+1 感觉数据没有卡这个算法,如果每次都遍历了一遍 drinks 算法会变成 O(nm),铁定超时 classSolution{public:intbreakfastNumber(vec...
cf 1413C (贪心排序+双指针) 题目链接:传送门 大致题意:给一个长度为6的数组a ,一个长度为n的数组b,对于每一个b[j] ,必须选择任意一个a[i] 并产生一个差值 x=b[j]-a[i] ,问所有方案中 MIN(最大差值-最小差值),即最小化 最大差值-最小差值;...
力扣,手撕三数之和(搞笑的是发了个链接,没写出来,写了将近20分钟,叫我没写出来没关系运行一下,我保存后登录代码就不见了,说了说思路 b+c=-a 排序sort 双指针) 二面:自我介绍 简单讲一下项目实习经历,主要做的工作,收获思考改进? 基于ElementPlus打造的可配置型表单如何实现的(简历里的) ...