微软0825笔试

第一题:去除数字中的一个5,使得数字最大。

样例:
  • n = 15958, return 1958
  • n = -5859, return -589
  • n = -5000, return 0
数据范围[-999995, 999995],且一定含有至少一个5。评估只看正确性,不看性能。
思路:暴力枚举,n最大才10万, 枚举也才5个数。先记录符号,然后枚举去除5的所有可能。
虽然是暴力枚举,但时间和空间复杂度O(lg(n))。随着n的位数增长。

第二题,leetcode560,k为0的情况。

思路:前缀和,然后求和。时间和空间复杂度都是O(n)。

第三题,求等差数列的个数,最少连续三个。

样例:
  • A = [-1, 1, 3, 3, 3, 2, 3, 2, 1, 0],return 5。有五个区间是等差
  • (1) [-1, 1, 3] 差为2
  • (2) [3, 3, 3] 差为0
  • (3) [3, 2, 1, 0] 差为1
  • (4) [3, 2, 1]
  • (5) [2, 1, 0]
思路:双指针确定等差区间,区间长度为3,则区间个数为1; 区间长度为4,则区间个数为(4 - 1)*(4 - 2)/2 == 3;可知区间长度为k时, 区间个数为(k - 1)*(k - 2)/2。
时间复杂度O(n),空间复杂度O(1)。

求求大家的点赞和收藏了。
想要原题截图的可以私信我。
#校招##秋招##微软#
全部评论
暴力枚举时间复杂度怎么会是O1呢
1 回复 分享
发布于 2022-08-26 01:09 广东
不应该是周五么?怎么是8-25呢?
点赞 回复 分享
发布于 2022-08-26 11:30 美国

相关推荐

3 13 评论
分享
牛客网
牛客企业服务