网易校招-2020-正式批-Java
编程题
1. 最小位数和
第二次做还卡了半天50%,需要考虑到%结果为0不打印的情况
#include <iostream> #include <vector> using namespace std; void S(vector<int>& nums) { string str; for (int num : nums) { // 主要特别考虑num%9=0的情况 if (num % 9 != 0)cout << num % 9; while (num >= 9) { cout << 9; num -= 9; } cout << endl; } } int main() { // 意思是反推一个数字,这个数字的各位数之和等于x,而且这个数字必须最小 int n,num; vector<int> nums; cin >> n; while (n-- > 0) { cin >> num; nums.push_back(num); } S(nums); return 0; }
3. 完美的序列
我不知道为什么这样是正确的
int prefectSequence(vector<int>& input) { int left = 0, right = 1; long sum = input[0]; int maxLen = 0; while (right < input.size()) { if (input[right] >= sum) { maxLen = max(maxLen, right - left + 1); sum += input[right]; right++; } else { // 这里就是我搞不懂的地方了 // 我不理解为什么这里双指针滑动窗口的正确的 sum -= input[left]; left++; } } return maxLen; } int main() { int T,n,num; cin >> T; vector<int> input; while (T-- >0) { cin >> n; for (int i = 0; i < n; i++) { cin >> num; input.push_back(num); } cout<<prefectSequence(input) << endl; input.clear(); } return 0; }
本文作者:YaosGHC
本文链接:https://www.cnblogs.com/yaocy/p/16651740.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步