- 前言
- 一、[编程题]完美序列
- 1.1 题目连接
- 1.2 题面
- 1.3 思路
- 1.4 代码
- 二、[编程题]商场收益统计
- 2.1 题目链接
- 2.2 题面
- 2.3 思路
- 2.4 代码
- 三、[编程题]大橘为重
- 3.1 题目链接
- 3.2 题面
- 3.3 思路
- 3.4 代码
- 四、[编程题]叠大饼
- 4.1 题目链接
- 4.2 题面
- 4.3 思路
- 4.4 代码
面试的链接:https://www.nowcoder.com/test/35148556/summary
牛客的校招面试真题,稍微做了一下,写了快一个小时,不知道为啥只有 90
分,勉强写个题解吧
https://www.nowcoder.com/questionTerminal/4017903f92b6455790b4c670c7176156
1.2 题面看一下数据范围 n n n 的范围是 1 e 4 1e4 1e4 ,只要 O ( N 2 ) O(N^2) O(N2) 以内的复杂度都能接受,于是我们可以先将数据处理为 − 1 、 1 -1、1 −1、1 的序列(分别对应小于等于 k k k 的数和大于 k k k 的数),然后对这个序列做一个前缀和,很显然,当一个序列的区间和大于 0 0 0 的时候就是一个完美的序列,那么我们只需要枚举一下区间的左端点,以及区间的长度即可,这样的话整体复杂度 O ( N 2 ) O(N^2) O(N2) 满足题目要求
ps:这里我开始以为能用双指针,琢磨了半小时发现写不出来(
1.4 代码#include
using namespace std;
#define endl "\n"
const int N = 1e5+10;
int n,k;
int a[N],b[N];
int main()
{
cin>>n>>k;
int l = 0,r = 0;
for(int i = 1;i >a[i];
a[i] = a[i] > k ? 1 : -1;
b[i] =b[i-1] + a[i];
}
int ans = 0;
for(int l = 1;l s>>w>>c;
st[s]={w,c};
}
int err = 0;
long long sum = 0;
for(int i = 1;i >s>>c;
if(st[s].second
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?