4.9 拼多多算法笔试,好难

1.数组B是数组A的子数组,尖峰数组B满足两个条件:
B.length>=3
B[0]<B[1]<...<B[k-1]<B[k]>B[k+1]>...B[B.length-1]
求数组A中最长的尖峰数组的长度
题目估计要求左右两边长度可以不同,我一直以为是相同的,结果不对

2.快乐数,给定一个正整数N,在N的倍数的每位数中,若满足只包含(1,0,x)这三个数,x可以是2-9,则说明该数是快乐数,求给定N,满足条件的最小倍数
例如N=24
48,72,96,120,满足条件的最小数是120

3.给定正整数N和M,求N的阶乘N!用M进制数表示时,末尾0的个数,N>=2,M<=1000000
例如N=5,M=10,5!=120,故返回1

4.给定只包含小写字母a-z的字符串S和正整数K,字符串A满足长度和S相等,字典序比S小,其中字符出现的次数是K的整数倍,称为神奇字符串。返回满足条件的神奇字符串中字典序最大的字符串

#笔试题目##拼多多#
全部评论
我服务器笔试也是这个。。。***难,就AC了一道😂
1 回复 分享
发布于 2021-04-09 17:46
快乐数: #include<iostream> using namespace std; bool is_Happy(int& a){ int temp=0; bool flag=0; while(a!=0){ if(a%10>1){ if(flag&&temp!=a%10){ return false; } else{ temp=a%10; flag=1; } } a=a/10; } return true; } int Least_Happy(int &N){ for(int i=1;i<100;i++){ int temp=i*N; if(is_Happy(temp))return i*N; } return -1; } int main(){ int N; while(true){ cin>>N; cout<<Least_Happy(N)<<endl; }  return 0; }
1 回复 分享
发布于 2021-04-09 18:26
ac两道 还有一道过了百分之二十几还是三十几,今天看状态应聘已终止了。。。
1 回复 分享
发布于 2021-04-11 08:57
同样,感觉太难了😓
点赞 回复 分享
发布于 2021-04-09 18:00
统计0的个数: #include<iostream> using namespace std; int main(){ while(true){ int N,M; cin>>N>>M; int test=1; for(int i=1;i<=N;i++){ test=test*i; } int result=0; cout<<test<<endl; while(test!=0){ if(test>=M&&test%M==0){ result++; } else{ break; } test=test/M;  } cout<<result; } return 0; }
点赞 回复 分享
发布于 2021-04-09 18:27
求第四道答案
点赞 回复 分享
发布于 2021-04-09 19:04
第4题给大家参考 https://www.nowcoder.com/discuss/636283
点赞 回复 分享
发布于 2021-04-09 20:14
第四题 #include<bits/stdc++.h> using namespace std; int main(){     int n, m;     cin >> n >> m;     map<int, int> factor;     for(int i = 2; i <= m; i++){         while(m % i == 0){             m /= i;             factor[i]++;         }     }     map<int, int> cnt;     for(auto iter = factor.begin(); iter != factor.end(); iter++){         int fac = iter->first;         int tmp = 0, cur = n;         while(cur){             tmp += (cur / fac);             cur /= fac;         }         cnt[fac] = tmp;     }     int res = INT_MAX;     for(auto iter = factor.begin(); iter != factor.end(); iter++){         int key = iter->first, val = iter->second;         //cout<<key<<" "<<val<<endl;         res = min(res, cnt[key] / val);     }     cout<<res<<endl;     return 0; }
点赞 回复 分享
发布于 2021-04-09 20:45
第一题 #include<bits/stdc++.h> using namespace std; int main(){     int n;     cin >> n;     if(n <= 2){         cout<<0<<endl;         return 0;     }     vector<int> nums(n, 0);     for(int i = 0; i < n; i++)         cin >> nums[i];     vector<int> dp(n, 1);     for(int i = 1; i < n; i++){         if(nums[i] > nums[i-1])             dp[i] = dp[i-1] + 1;     } //    int res = 0;     vector<int> res(n, 0);     for(int i = 2; i < n; i++){         if(nums[i] < nums[i-1]){             res[i] = max(res[i], dp[i-1] + 1);             if(res[i-1] != 0)                 res[i] = max(res[i], res[i-1] + 1);         }     }     cout<<*max_element(res.begin(), res.end())<<endl;     return 0; }
点赞 回复 分享
发布于 2021-04-09 20:46
3没想到怎么做好,向前穷举字典序暴力之过了5%,14有原题,2比较简单
点赞 回复 分享
发布于 2021-04-09 23:57
拼多多笔试成绩怎么看啊
点赞 回复 分享
发布于 2021-04-10 00:12
拼多多笔试只有算法题吗?
点赞 回复 分享
发布于 2021-07-20 19:41

相关推荐

5 17 评论
分享
牛客网
牛客企业服务