2022-08-20-网易笔试题

写在前面

题目收集来源自网络,前四题是开发岗的,后四题是算法岗的,因为代码无处提交,不一定正确,就不贴出来了,这里只写一下我的思路吧~欢迎大家一起讨论~~

1、 

思路:因为最大1e9,也就是最多10位数字。且操作只跟结果有关,跟过程无关,因此可以对a和b分别二进制枚举删除的数字,这样a有2^10个可能性,b有2^10个可能性,然后暴力取操作次数的min就可以了。时间复杂度O(2^10^2),正常写的话可能带个log,但是不难通过一些方法优化掉。


2、

 思路:分析题意不难发现,奇数位置一定是同一个数字,偶数位置一定是同一个数字,且操作只能+1,不能-1。所以分别加到奇数偶数分别的max就可以了。


3、

 思路:读题发现,要求尽可能保证“好e”最大化,所以对于len(s)为奇数的情况,e只有一种摆法。对于len(s)为偶数的情况,e有两种摆法。

对于每一种摆法,又有r开头和d开头两种情况。然后分类讨论一下就好了。


4、

 思路:从中间的元素入手,题意转化为:有多少三元组(a,b,a),其中a>b。那么可以枚举每一个b,然后维护两个数组l和r,其中l[a]代表b左边有多少个值为a的元素,r[a]同理。然后树状数组维护l[a]*r[a],当b移动的时候就动态计算并更新l,r,树状数组。统计的时候只需要统计树状数组后缀和就可以了。时间复杂度O(nlogn),挺好的题。


5、

小红拿到一个数组,想在其中选择k个数使得这k个数的 按位与运算的值尽可能大。

输入,第一行n和k 用空格隔开
第二行 n个正整数ai,代表小红拿到的数组

思路:想了一个复杂度小于O(nlogn)的。首先排序,然后从高位向低位枚举,当第i位为1的个数>=k的时候,假设有n1个数,那就再从n1这些数里面遍历后续的低位。然后注意一些边界情况的处理,比如如果第i位为1的不够k个,或者刚好k个的情况。

网上找了一个代码,复杂度是O(30*n)的

n, k = map(int, input().split())
*nums, = map(int, input().split())cnt = [[0] * 30 for _ in range(n)]for i in range(n):tmp = nums[i]idx = -1while tmp:if tmp & 1:cnt[i][idx] += 1tmp = tmp >> 1idx -= 1
final = [0] * 30 
exclude = set()
for i in range(30):tmp = 0s = set()for j in range(n):if j in exclude:continue if cnt[j][i] == 1:tmp += 1else:s.add(j)if tmp >= k:final[i] = 1 exclude = exclude | s     print(int(''.join(map(str,final)), 2))

6、(这题对于贪心的证明还是可以好好思考下的!!!

一个长度为n的排列(比如[1,2,3]是一个排列,[1,2,5,3]则不是)每次可以让一个数字加一同时另一个数字减一,同时必须保证每次操作后依旧是一个排列。求:将这个排列变成非递减排列的最小操作次数?

n = int(input())
*nums, = map(int, input().split())hm = dict()
for i in range(n):hm[nums[i]] = i
res = []
acc = 0
for i in range(n):while nums[i] != i + 1:acc += 1idx2 = hm[nums[i] - 1]nums[i], nums[idx2] = nums[idx2], nums[i]hm[nums[idx2]] = idx2 hm[nums[i]] = i res.append([idx2, i])
print(acc)
for i in range(len(res)):print(res[i][0], res[i][1])

 贴一下wjh大佬的证明思路,为什么可以先考虑第一个数降为目标值,再考虑后续位置。

 


 

7、

小红拿到一个只包含 r e d三种字母的字符串,她想知道有多少子串满足 r e d三种字母的数量严格相等?

输入,一个仅包含red的字符串 长度不超过200000

s = input().strip()
from collections import defaultdict 
hm = defaultdict(int)
hm['0,0,0'] = 1
r = e = d = 0
res = 0
for i in range(len(s)):if s[i] == 'r':r += 1if s[i] == 'e':e += 1if s[i] == 'd':d += 1state = f'{0},{e-r},{d-r}'res += hm[state]hm[state] += 1
print(res)

 思路:将差值存入一个map,相等问题转化为前缀问题,然后查map并维护即可。


8、输入三个数,a,b,n。前两个为前两个项的数,后面每个数都是前两个数的乘积的平方,输出第n个数,如果超了1e9+7要取余。n<=1e9

思路:分析会发现,数列为[a1b0, a0b1, a2b2, a4b6, a12b16](数字代表次方),所以如果把a和b拆开来看的话,就会发现对于次方的通式为f[i]=2(f[i-1]+f[i-2]),配合矩阵快速幂就可求解。对于取余,可以用费马小定理(因为p是质数)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/439208.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TUN/TAP设备浅析(一) -- 原理浅析

TUN/TAP设备浅析 TUN设备 TUN 设备是一种虚拟网络设备&#xff0c;通过此设备&#xff0c;程序可以方便地模拟网络行为。TUN 模拟的是一个三层设备,也就是说,通过它可以处理来自网络层的数据&#xff0c;更通俗一点的说&#xff0c;通过它&#xff0c;我们可以处理 IP 数据包…

2022-08-21 星环科技-C++开发笔试

1、 思路&#xff1a;拓扑排序&#xff0c;不解释了 2、 思路&#xff1a; 本来以为他是一个图论问题&#xff0c;找最大环。 但其实对于这种情况&#xff0c;他是要输出0的&#xff0c;而不是9&#xff0c;所以他不是一个图论问题&#xff0c;他带有顺序性&#xff0c;这种可…

【算法练习题】位运算(贪心)

题目&#xff1a; 解题报告&#xff1a; 首先预备几个结论&#xff1a; 1、对于两个数a,b &#xff0c;生成a&b和a|b&#xff0c;则一定对应一个常数c&#xff0c;使得生成的两个数分别是ac和a-c。 2、对于两个数a,b&#xff0c;生成a&b和a|b的前后&#xff0c;二进…

TUN/TAP设备浅析(三) -- TUN/TAP设备的应用

上一篇文章主要讲述了TUN/TAP设备的一些原理&#xff0c;你可能会好奇&#xff0c;TUN/TAP设备究竟有什么用处呢&#xff1f;所以这篇文章&#xff0c;我想用一些实际的例子来回答这个问题。 例子源自陈硕老师的博客&#xff0c;博文中关于TUN/TAP设备的使用非常典型&#xff…

云计算底层技术-虚拟网络设备(Bridge,VLAN)

openstack底层技术-各种虚拟网络设备一(Bridge,VLAN) openstack底层技术-各种虚拟网络设备二(tun/tap,veth) Linux BridgeBridge与netfilterVLAN VLAN设备原理及配置VLAN在openstack中的应用IBM网站上有一篇高质量文章Linux 上的基础网络设备详解。本文会参考文章部分内容&…

【Codeforce-911D】逆序对

题干&#xff1a; Problem - D - Codeforces 解题报告&#xff1a; 不难发现&#xff0c;假设n的倒序排列(n,n-1,...,3,2,1)的逆序对是x&#xff0c;则对n的任意一个逆序对数为y的排列做翻转&#xff0c;新生成的排列的逆序对数位x-y。 因此这题作为奇偶性&#xff0c;其实只…

【LeetCode-面试题 17.09 - medium】第 k 个数

力扣 解题报告&#xff1a; 法一&#xff1a;优先队列做bfs。 法二&#xff1a;看成三个有序链表&#xff0c;做三路归并即可。 注意这里归并&#xff0c;如果多个指针最小值&#xff0c;那么这些指针都需要

10分钟精通SharePoint-验证方式

简介 说到身份验证大家应该不陌生&#xff0c;访问任何平台或系统都需要身份验证&#xff0c;SharePoint也不例外&#xff0c;用户身份验证可根据身份验证提供程序验证用户的身份&#xff0c;身份验证提供程序包含用户平局切可以确认用户正确提交这些平均的目录或数据库。用于…

【18周-钻石】能量供应

思路&#xff1a; 总纲是贪心&#xff0c;按终点排序&#xff0c;然后优先往右边排能量塔。具体实现的时候需要单点更新&#xff0c;区间查询&#xff0c;所以用树状数组set维护一下&#xff0c;就OK了。 代码&#xff1a;&#xff08;不知道为啥有一个样例RE了&#xff09; …

【LeetCode-2421(hard)】好路径的数目

解题报告&#xff1a; 提供两种解法&#xff1a;1、并查集。2、启发式合并。3、树分治&#xff08;点分治&#xff0c;但是校招应该不会问到这个难度吧&#xff0c;&#xff0c;不复习了就&#xff09; 解题思路1&#xff1a; 两种思考方式可以想到这个解法。 1、【由特解到…

分布式事务解决方案框架(LCN)

事务概念 事务特性(ACID) 原子性&#xff08;A&#xff09; 所谓的原子性就是说&#xff0c;在整个事务中的所有操作&#xff0c;要么全部完成&#xff0c;要么全部不做&#xff0c;没有中间状态。对于事务在执行中发生错误&#xff0c;所有的操作都会被回滚&#xff0c;整个…

C#分布式事务解决方案-TransactionScope

引用一下别人的导读&#xff1a; 在实际开发工作中&#xff0c;执行一个事件&#xff0c;然后调用另一接口插入数据&#xff0c;如果处理逻辑出现异常&#xff0c;那么之前插入的数据将成为垃圾数据&#xff0c; 我们所希望的是能够在整个这个方法定义为一个事务&#xff0c;Tr…

【19周-星耀】FASTER!FASTER!FASTER!

题目&#xff1a; 解题报告&#xff1a; 看数据范围&#xff0c;应该是个n^3的dp。 但是刚开始觉得二维就可以写。 但是G了&#xff0c;因为无法根据定义的状态判断从[i]到[i1]的速度是多少。我这直接默认是d[i]了&#xff0c;但是显然不一定是。 然后感觉欸&#xff0c;我是…

[转载]使用消息队列实现分布式事务-公认较为理想的分布式事务解决方案

前阵子从支付宝转账1万块钱到余额宝&#xff0c;这是日常生活的一件普通小事&#xff0c;但作为互联网研发人员的职业病&#xff0c;我就思考支付宝扣除1万之后&#xff0c;如果系统挂掉怎么办&#xff0c;这时余额宝账户并没有增加1万&#xff0c;数据就会出现不一致状况了。 …

【LeetCode-6195. hard】对字母串可执行的最大删除数

题干:力扣 解题报告&#xff1a; 刚开始觉得直接贪心选有短则短&#xff0c;但是发现不行&#xff0c;不能贪心有短的可以操作的则选短的。 三个方式想到倒着递推。一是直接记住这个特例&#xff0c;正推还倒推不能互相转换的特例。 二是因为dp[i]代表前i个的最大次数&#x…

【洛谷 P2034】选择数字(单调队列优化dp)

题目链接&#xff1a;选择数字 - 洛谷 解题报告&#xff1a; 思路1&#xff1a; 参考代码&#xff1a; #include<cstdio> #include<iostream> #include<deque> using namespace std; const long long Maxn10000020,inf0x3f3f3f3f; long long a[Maxn],s[Max…

了解Entity Framework中事务处理

Entity Framework 6以前&#xff0c;框架本身并没有提供显式的事务处理方案&#xff0c;在EF6中提供了事务处理的API。 所有版本的EF&#xff0c;只要你调用SaveChanges方法进行插入、修改或删除&#xff0c;EF框架会自动将该操作进行事务包装。这种方法无法对事务进行显式的控…

【LeetCode-769. medium】最多能完成排序的块

力扣 解题报告&#xff1a; 注意这种【根据一个要求&#xff0c;将数组分成多个区间】类模型的问题&#xff08;比如汽车加油站、加法表达式求和&#xff09;&#xff0c;套路就这三步&#xff1a; 1、初始化 2、for循环或者while&#xff0c;里面三步 2.1 更新 2.2 如果符合…

SQL Server Profiler工具

一、SQL Profiler工具简介 SQL Profiler是一个图形界面和一组系统存储过程&#xff0c;其作用如下&#xff1a; 图形化监视SQL Server查询&#xff1b;在后台收集查询信息&#xff1b;分析性能&#xff1b;诊断像死锁之类的问题&#xff1b;调试T-SQL语句&#xff1b;模拟重放…

【LeetCode856. medium】括号的分数

856. 括号的分数 解题报告&#xff1a; 括号问题考虑栈。 本来是想用栈做&#xff0c;但是发现其实得分是相加还是乘2&#xff0c;和括号的层级有关系。 比如第三层的括号之间就是相加&#xff0c;第二层的括号就是把第三层的分数和乘2。记得算完第二层的分之后&#xff0c;…