1. 数组的山谷是指数组A里面的一个连续子数组B满足:

1) B.length>=3

2) 存在i,有B[i]左边的值比它小,右边的值比它大

现给出一个数组A,找出其中的最长山谷,有就输出其长度,没有就输出为0;

输入为一个数组A; 输出为山谷的长度。

分析:

这个题只需要从左往右查找,注意边界处理即可

#include<iostream>
#include <string>
#include <vector>
using namespace std;int main()
{int m;vector<int> vi;while (cin >> m){vi.push_back(m);}int len = vi.size();int  idown=1;int  iup=1;int maxlen = 0, re = 0;for (int i = 1; i < len; i++){if (iup == 1){if (vi[i] < vi[i - 1]){idown++;}else if (vi[i]==vi[i-1]){iup = 1;idown = 1;maxlen = 0;}else{maxlen += idown;iup++;;}}else{if (vi[i] > vi[i- 1]){iup++;;}else if (vi[i] == vi[i- 1]){maxlen += (iup-1);if (re < maxlen)re = maxlen;iup = 1;idown = 1;maxlen = 0;}else{maxlen += (iup - 1);if (re < maxlen)re = maxlen;iup = 1;idown =2;maxlen = 0;}}}cout << re << endl;system("pause");return 0;
}

2、给定一个字符串S,求出通过循环构造出S的最短字符串P;

输入:输入只包含一个用例,字符串S:abcabc

输出:最短字符串P :abc

分析:

这个题开始看到后想用最长重复子串来做,后来感觉实在不太好做,后来想想还是平移字符串的方式强行解,也即是若是循环平移k个单位,前后字符串相同,这是平移的是最短字符串。

#include<iostream>
#include <string>
#include <vector>
using namespace std;int main()
{string str;cin >> str;string s1(str);int i = 0;for (i = 0; i < str.size(); i++){s1 += str[i];s1.erase(s1.begin());if (s1 == str) break;}if(i==str.size()){i = 0;}cout << ++i << endl;system("pause");return 0;
}

3、这个题是lintcode原题,题号797,到达一个数字,这里就不赘述了。

4、靓号问题

描述:手机号码0-9,一个手机号码至少有K位数相同则为靓号,若修改号码中的一个数字需要的金额为新数字与旧数字的差值(绝对值),问给出一个号码,改成靓号需要多少钱。

分析:

这个题想来想去还是只能暴力解:

1)求出替换成0-9个数为k时需要的花费,在附近像两边逐渐扩散找,比如3,可以先找4和2,找完了找3和5。

2)找出花费最小的并且替换成号码

代码如下:

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
int main()
{int  m = 0, K = 0;cin >> m >> K;vector<int> vi;vector<int> vnum(10, 0);string s;getline(cin, s);s.clear();cin >> s;for (int i = 0; i < m; i++){int si = int(s[i] - '0');vi.push_back(si);vnum[si]++;}vector<vector<int>> cl(10, vector<int>(10, 0));vector<int> mCost(10, 0);for (int i = 0; i < 10; i++){int num = K - vnum[i];if (num <= 0) {cl[i][i] = 0; break;}int flag = -1;while (num > 0){if (i + flag >= 0){num = num - vnum[i + flag];if (num <= 0) {mCost[i] += abs(flag)*(num + vnum[i + flag]);cl[i][i + flag] = num + vnum[i + flag]; break;}mCost[i] += abs(flag)*vnum[i + flag];cl[i][i + flag] = vnum[i + flag];}flag = -flag;if (i + flag < 10){num = num - vnum[i + flag];if (num <= 0) {mCost[i] += abs(flag)*(num + vnum[i + flag]);cl[i][i + flag] = num + vnum[i + flag]; break;}mCost[i] += abs(flag)*vnum[i + flag];cl[i][i + flag] = vnum[i + flag];}flag = -(flag + 1);}}int minCost = mCost[0], mini = 0;for (int i = 1; i < 10; i++){if (minCost > mCost[i]){minCost = mCost[i];mini = i;}}for (int i = 0; i < vi.size(); i++){if (cl[mini][vi[i]] != 0){cl[mini][vi[i]]--;s[i] = mini + '0';}}cout << minCost << endl;cout << s << endl;vi.clear();vnum.clear();mCost.clear();cl.clear();system("pause");return 0;
}

这个主要还是自己记录,没有测试用例来测,只是提供一种方法,若有漏洞或好的算法欢迎大神指点。

18年拼多多学霸批算法笔试相关推荐

  1. [java] 模仿拼多多红包递减算法

    [java]模仿拼多多红包递减算法 该说不唠,直接上代码.可直接复制使用 package com.yuezhi.util;import java.math.BigDecimal;/*** @Proje ...

  2. 今日头条18校招第一批算法笔试

    给定一个数组序列, 需要求选出一个区间, 使得该区间是所有区间中经过如下计算的值最大的一个: 区间中的最小数 * 区间所有数的和最后程序输出经过计算后的最大值即可,不需要输出具体的区间.如给定序列   ...

  3. 拼多多提前批(7月28号笔试题

    看到昨天同学拼多多的笔试题,今天试着写了写,因为自己并没有参加过笔试,写出来的只是我自己能想到的测试用例都过了的,如果有错误,欢迎各位大神指出,仅仅是提供一个解题的想法.而且因为自己基本功不够,写出的 ...

  4. 2019.9.1 拼多多 服务端研发-笔试(C++)

    拼多多的笔试没有选择题,直接是四道编程题,非常干脆直接,上手就是干! 优先偶数的有序TopN 题目描述: 读入一个数列和N值,返回按优先级排序的N个数,满足: (1)所有偶数优先级大于奇数 (2)同为 ...

  5. 2018 拼多多校招贪心算法题

    题目描述 六一儿童节,老师带了很多好吃的巧克力到幼儿园.每块巧克力j的重量为w[j],对于每个小朋友i,当他分到的巧克力大小达到h[i] (即w[j]>=h[i]),他才会上去表演节目.老师的目 ...

  6. 拼多多服务端实习生笔试-滑动窗口2018/4/3

    有一整数数组A[n],滑动窗口大小为k,在A上从左到右移动,每次一步,求此过程中每步的子数组的最大值与最小值的差值 eg: 数组A=1 3 -1 -3 5 3 6 7      k=3 滑动窗口的位置 ...

  7. 拼多多2020学霸批数据分析师笔试 —— SQL整理(2019.7.28)

    半个月过去,终于安装好Mysql,可以开始实操.解决和总结「拼多多学霸批」的SQL题了.真题还是非常珍贵的,难得和业务需求结合在一起. 加之这周,了解了「窗口函数」,比半个月前的我,又有多一点不一样的 ...

  8. 拼多多2020届数据分析面试题合集

    关注上方"AI派",选择星标, 关键时间,第一时间送达! 来源整理自公众号:胖里的日常 第一家公司的2020届数据分析面试题整理就从拼多多开始吧~ 招聘总共分为学霸批.寻梦批.正式 ...

  9. 拼多多数据分析面试题大合集(20个)

    第一家公司数据分析面试题整理就从拼多多开始,招聘总共分为学霸批.寻梦批.正式批三批. 本人参加的是寻梦批的现场面,真实见闻是分三面,两面技术一面hr,可能由于人员安排原因,hr面并不都放在最后一面,且 ...

  10. 【拼多多】数据分析笔试+三面面经

    今年投的是拼多多的学霸批,然后走完了整个流程,包括笔试+三次面试,现在在等最终结果.码字不易,喜欢请点赞,谢谢!!! [笔试] 笔试主要考察SQL,包括留存率问题:多表查询,join,排名函数等考点之 ...

最新文章

  1. 2.View绘制分析笔记之onMeasure
  2. java启动子线程过多导致卡死_java线程基础巩固---多Product多Consumer之间的通讯导致出现程序假死的原因分析...
  3. layui table 设置滚动条
  4. 机器学习这四个东西,你知道吗?
  5. boost::mpl::remove相关的测试程序
  6. python正则匹配日期2019-03-11_都2019年了,正则表达式为啥还是这么难?这里的Python学习教程教你搞定!...
  7. Actor-ES框架:Ray-Handler-消息订阅器编写
  8. Anaconda 镜像源操作(查看配置删除)
  9. centos7配置br0_Docker CentOS7 修改网络配置与宿主机桥接
  10. 数据结构之图的应用:有向无环图
  11. python数据类型--数字、字符串
  12. 六企业级开源仓库nexus3实战应用–使用nexus3配置yum私有仓库
  13. 微信HOOK 关于转发消息功能开发的一些开发心得
  14. EPON联通网关超级管理员密码获取办法
  15. 深入理解Java虚拟机-Java内存区域与内存溢出异常
  16. DDR3 full empty如何产生?
  17. 怎样在表格中选出同一类_excel表格怎么将相同内容筛选出来
  18. 久闻大名的Fragment
  19. Jenkins实现微服务自动化部署_Jenkins环境设置完整版 (二)
  20. 常用短距离无线通信优缺点的纵横比较

热门文章

  1. 路由器dhcp服务异常不能上网_关闭DHCP服务后,路由器不能上网怎么办?
  2. c语言写股票交易软件,写股票软件
  3. PS 滤镜算法原理——碎片效果
  4. 二进制转十进制c++语言数组,C++实现读入二进制数并转换为十进制输出
  5. AirServer7电脑桌面版一款便捷式手机电脑投屏软件
  6. word图片靠右_word设置图片边缘透明的方法步骤
  7. 数字移动c语言课程设计,《移动应用开发》课程设计.doc
  8. 【O2O领域】外卖订餐APP商家手机端Axure原型作品(实战项目功能全)
  9. “繁盛计划”,纾困中国餐饮难题背后的美团式解法
  10. git deamon 一个简单的git服务器