17校招真题题集(2)6-10
注:本系列题目全是按照通过率降序来排列的,基本保证题目难度递增。
6、
题目名称:Fibonacci数列
来源:网易
题目描述
Fibonacci数列是这样定义的:
F[0] = 0
F[1] = 1
for each i ≥ 2: F[i] = F[i-1] + F[i-2]
因此,Fibonacci数列就形如:0, 1, 1, 2, 3, 5, 8, 13, ...,在Fibonacci数列中的数我们称为Fibonacci数。给你一个N,你想让其变为一个Fibonacci数,每一步你可以把当前数字X变为X-1或者X+1,现在给你一个数N求最少需要多少步可以变为Fibonacci数。
输入描述:
输入为一个正整数N(1 ≤ N ≤ 1,000,000)
输出描述:
输出一个最小的步数变为Fibonacci数"
示例1
输入
15
输出
2
分析:我们不断生成斐波那契数列,生成到比输入大了以后,比较这一个数和前一个数就好。
def ojbk(n):x=0y=1while 1:if y>n: return min(y-n, n-x)x,y=y,x+y
print(ojbk(input()))
7、
题目名称:数字反转
来源:网易
题目描述
对于一个整数X,定义操作rev(X)为将X按数位翻转过来,并且去除掉前导0。例如:
如果 X = 123,则rev(X) = 321;
如果 X = 100,则rev(X) = 1.
现在给出整数x和y,要求rev(rev(x) + rev(y))为多少?
输入描述:
输入为一行,x、y(1 ≤ x、y ≤ 1000),以空格隔开。
输出描述:
输出rev(rev(x) + rev(y))的值
示例1
输入
123 100
输出
223
分析:直接按题意写出来函数,模拟即可。
python字符串法:
L=(input("").split(' '))
a=L[0]
b=L[1]
def rev(x):q=int(x[::-1])return q
c=str(rev(a)+rev(b))
print(str(rev(c)))
简化:
a = input().split()
print(str(int(a[0][::-1]) + int(a[1][::-1]))[::-1].lstrip("0"))
c++实现高效逆置:
#include<iostream>
using namespace std;
int rev(int m)
{int t=0;while(m>0){t=t*10+m%10;m=m/10;}return t;
}int main()
{
int x,y;while(cin>>x>>y){cout<<rev(rev(x) + rev(y))<<endl;}return 0;
}
8、
题目名称:下厨房
来源:网易
题目描述
牛牛想尝试一些新的料理,每个料理需要一些不同的材料,问完成所有的料理需要准备多少种不同的材料。
输入描述:
每个输入包含 1 个测试用例。每个测试用例的第 i 行,表示完成第 i 件料理需要哪些材料,各个材料用空格隔开,输入只包含大写英文字母和空格,输入文件不超过 50 行,每一行不超过 50 个字符。
输出描述:
输出一行一个数字表示完成所有料理需要多少种不同的材料。
示例1
输入
BUTTER FLOUR HONEY FLOUR EGG
输出
4
分析:就是没有出现过的就放到一个容器里,高效查找。
python:
ll=[]//存东西
while 1:try:l=(input().split())for i in range(len(l)):if l[i] in ll://没有就放进去continueelse:ll.append(l[i])except:print(len(ll))break
c++ set:
#include <iostream>
#include <set>
#include <string>
using namespace std;
int main() {string str;set<string> datas;while (cin >> str) {datas.insert(str);}cout << datas.size() << endl;return 0;
}
9、
题目名称:n个数里出现次数大于等于n/2的数
来源:好未来
题目描述
输入n个整数,输出出现次数大于等于数组长度一半的数。
输入描述:
每个测试输入包含 n个空格分割的n个整数,n不超过100,其中有一个整数出现次数大于等于n/2。
输出描述:
输出出现次数大于等于n/2的数。
示例1
输入
3 9 3 2 5 6 7 3 2 3 3 3
输出
3
分析:你就算暴力也是可以的
l=(input().split())
for i in l://遍历每一个数a=0for j in l://查找if i==j:a+=1if a>len(l)/2-1:print(i)break
当然,动态规划思想会很高效,我这里放一个链接,第一题就是
https://blog.csdn.net/hebtu666/article/details/81390118感兴趣的看一看
10、
题目名称:小易喜欢的单词
来源:网易
题目描述
小易喜欢的单词具有以下特性:
1.单词每个字母都是大写字母
2.单词没有连续相等的字母
3.单词没有形如“xyxy”(这里的x,y指的都是字母,并且可以相同)这样的子序列,子序列可能不连续。
例如:
小易不喜欢"ABBA",因为这里有两个连续的'B'
小易不喜欢"THETXH",因为这里包含子序列"THTH"
小易不喜欢"ABACADA",因为这里包含子序列"AAAA"
小易喜欢"A","ABA"和"ABCBA"这些单词
给你一个单词,你要回答小易是否会喜欢这个单词(只要不是不喜欢,就是喜欢)。
输入描述:
输入为一个字符串,都由大写字母组成,长度小于100
输出描述:
如果小易喜欢输出"Likes",不喜欢输出"Dislikes"
示例1
输入
AAA
输出
Dislikes
分析:题意i容易理解,操作挺麻烦的,根据题意实现功能就好。
看代码注释
a=input()
q=0
v=0
for i in a://遍历判断条件if i.islower():print("Dislikes")q=1//后面就不会执行了break
for j in range(len(a)-1)://遍历判断条件if q==1:breakelif a[j]==a[j+1]:print("Dislikes")q=1//后面就不会执行了
for z in range(len(a)-3)://遍历判断条件if q==1:breakfor x in range(1,len(a)):if a[z]==a[x]://找到相同的for g in range(z+1,x)://相同的之间for h in range(x+1,len(a))://之后if a[h]==a[g]://相同,也就是ABAB型print("Dislikes")v=1breakif v==1:break
if q==0://执行到这里就是likeprint("Likes")
找来的c++,不是我写的:
#include "stdio.h"
#include "string.h"int FindDislike(char *s,int length);
int FindForward(char *s,int x,int y,int length);int main(){char s[101];int like=1;scanf("%s",s);int len=strlen(s); //先完成有没有连续的数for(int i=0;i<len-1;i++){if(len<2){like=1;}else if(s[i]==s[i+1]){like=0;break;}}///if(like==1 && len>1)like=FindDislike(s,len);if(like==1)printf("Likes",s);elseprintf("Dislikes");return 0;
}int FindDislike(char *s,int length){int like=1;for(int i=0;i<length;i++){for(int j=1;j<length;j++){if(s[i]==s[j]) {like=FindForward(s,i,j,length);if(like==0){ return 0;}} }}return 1;
}int FindForward(char *s,int x,int y,int length){if(y==length-1)return 1;for(int i=x+1;i<y;i++){for(int j=y+1;j<length;j++){if(s[i]==s[j])return 0;}}return 1;
}
17校招真题题集(2)6-10相关推荐
- 17校招真题题集(3)11-15
注:本系列题目全是按照通过率降序来排列的,基本保证题目难度递增. 11. 题目名称:买苹果 来源:网易 题目描述 小易去附近的商店买苹果,奸诈的商贩使用了捆绑交易,只提供6个每袋和8个每袋的包装(包装 ...
- 200 道算法面试题集锦!Python 实现,含华为、BAT 等校招真题!
点击上方"AI有道",选择"置顶"公众号 重磅干货,第一时间送达 春招临近,无论是要找工作的准毕业生,还是身在职场想要提升自己的程序员,提升自己的算法内功心法. ...
- 拼多多2018年校招真题
拼多多2018年校招真题 题目描述 给定一个无序数组,包含正数.负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1) 输入描述: 无序整数数组A[n] 输出 ...
- 牛客网 2018校招真题 美团点评 K的倍数
Description 牛客网 2018校招真题 K的倍数 Solving Ideas sum[i + 1]: 表示序列p[0]...p[i]的和 从长度最大的子串开始判断,当剩余需要判断子串长度不可 ...
- 牛客网 2018校招真题 摩拜 排序次数
Description 牛客网 2018校招真题 排序次数 Solving Ideas 将数组a的元素拷贝到数组b 对数组b进行排序 对比数组b,统计数组a中已排序的元素个数 如:a = [2, 11 ...
- 牛客网 2018校招真题 滴滴出行 寻找丑数
Description 牛客网 2018校招真题 寻找丑数 Solving Ideas 参考<剑指offer>丑数 Time complexity : O(n)O(n)O(n) Space ...
- 牛客网 2018校招真题 爱奇艺 最后一位
Description 牛客网 2018校招真题 最后一位 Solving Ideas 二分查找 Solution import java.io.BufferedReader; import java ...
- 备战网络工程师认证考试:历年真题合集
备战网络工程师认证考试:历年真题合集 网络工程师是通过学习和训练,掌握网络技术的理论知识和操作技能的网络技术人员.网络工程师能够从事计算机信息系统的设计.建设.运行和维护工作.参加全国计算机等级考试之 ...
- 牛客网 2018校招真题 京东 回文
Description 牛客网 2018校招真题 回文 Solving Ideas 计算以str[str.length() - 1]为结尾的最大的回文长度,从而判断最少需要追加多少个字母才能使整个串成 ...
最新文章
- 《阿里巴巴Java开发规约》插件全球首发!
- 并发和在线用户数的思考
- aix cpu java_AIX cpu理解
- tomcat8 安装|解决启动慢|进入管理|host-manager 403错误
- 鸿蒙科技与文化,数字阅读 | “华为鸿蒙”:当现代科技遇到古典文化
- LInux:shell 命令:字符串截取
- 密码学 区块链中的应用专栏 【简介】
- python snmp采集交换机信息_网管交换机与非网管交换机的利弊介绍
- Bootstrap 工具提示插件
- docker安装DM8
- IM即时通讯实现的原理
- android 5.1 改mac地址,mac地址可以随便改吗
- 小学认识计算机说课ppt,“认识计算机”说课稿.ppt
- mysql 字段扩容_关于数据库扩容与缩容
- FID指标复现踩坑避坑 文本生成图像FID定量实验全流程复现(Fréchet Inception Distance )定量评价实验踩坑避坑流程
- 手把手带你调参Yolo v5 (v6.2)(推理)
- 【题解】NOIP-2016 天天爱跑步
- sip测试工具--Sipp的编译
- Java 并发之 AQS 详解(上)
- 国产2.4G芯片的简单应用
热门文章
- asterisk1.8 账号信息mysql存储(动态)
- 如何在asterisk中限制呼叫路数?
- VMWare网络设置的3中方式
- cookie 百科_cookie是什么
- php 时间错误,PHP xdebug调试trace记录时间错误
- axure 链接html文件,通过WuliHub免费托管原型Axure HTML文件
- linux怎么设置tomcat自动启动,linux添加tomcat服务并设置开机启动
- 【转】matlab函数编译成dll供Cpp调用的方法
- 【转】对称加密和分组加密中的四种模式(ECB、CBC、CFB、OFB)
- REVERSE-PRACTICE-BUUCTF-26