当前位置: 首页 > news >正文

笔试模拟 day9

观前提醒:

笔试所有系列文章均是记录本人的笔试题思路与代码,从中得到的启发和从别人题解的学习到的地方,所以关于题目的解答,只是以本人能读懂为目标,如果大家觉得看不懂,那是正常的。如果对本文的某些知识有不同的观点,欢迎讨论。

题目链接:

第一题:添加逗号_牛客题霸_牛客网

第二题:跳台阶_牛客题霸_牛客网

第三题:扑克牌顺子_牛客题霸_牛客网

---------------------------------------------------我是分割线---------------------------------------------------------------

---------------------------------------------------我是分割线---------------------------------------------------------------

---------------------------------------------------我是分割线---------------------------------------------------------------

---------------------------------------------------我是分割线---------------------------------------------------------------

---------------------------------------------------我是分割线---------------------------------------------------------------

第一题 

思路:

一道很简单的模拟题,可以根据输入的数字,直接取三位判断一下,添加",",但是要注意由于我们的string的添加使用的是+=接口,所以在结尾处我们要逆序一下string。

同时还要注意一下:开头可能多填了逗号,特判一下

代码: 

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;int main() {long long k=0;cin>>k;vector<int> nums;while(k){int c=k%10;nums.push_back(c);k/=10;}int n=nums.size();string str;for(int i=0;i<n;i++){if(i % 3 == 0 && i != 0) str+=',';str+=to_string(nums[i]);}reverse(str.begin(),str.end());cout<<str<<endl;return 0;
}

---------------------------------------------------我是分割线---------------------------------------------------------------

---------------------------------------------------我是分割线---------------------------------------------------------------

---------------------------------------------------我是分割线---------------------------------------------------------------

第二题 

思路:

最简单的dp题呀,不用多言了。

代码:

#include <iostream>
#include <vector>
using namespace std;int main() {int n=0;cin>>n;vector<int> dp(n+1,1);for(int i=2;i<=n;i++){dp[i]=dp[i-1]+dp[i-2];}cout<<dp[n]<<endl;return 0;
}

---------------------------------------------------我是分割线---------------------------------------------------------------

---------------------------------------------------我是分割线---------------------------------------------------------------

---------------------------------------------------我是分割线---------------------------------------------------------------

第三题 

思路:

这道题还是很简单的,我提供两种思路。

1)排序+模拟

可以先排序,将数组变为有序,然后再判断非零数字之间的关系,统计万能数字“0”,由于数字“0”可以充当任意的数字所以大家再判断非零数字的关系时还要考虑0的存在,只要相差的数字小于0的个数,那么就可以填充。

2)观察顺子的规律

我们可以发现顺子主要有两条规律。

1.数组中不能有重复元素。

2.数组的最大值与最小值不能相差超过四。

满足上述条件的就是顺子。

代码:

//解法一
class Solution {
public:bool IsContinuous(vector<int>& nums) {sort(nums.begin(),nums.end());int n=nums.size();int zero=0;for(int i=0;i<n-1;i++){   if(nums[i] == 0) {zero++;continue;}if(nums[i]  != nums[i+1]) {zero-=(nums[i+1]-nums[i]-1);if(zero < 0)return false;}else if(nums[i] == nums[i+1]) return false;}return true;}
};//解法二
class Solution {public:bool IsContinuous(vector<int>& nums) {int Max = 0, Min = 14;bool hash[14] = {0};int n = nums.size();for (int i = 0; i < n; i++) {if (nums[i] != 0) {if (!hash[nums[i]] ) {hash[nums[i]] = true;Max = max(nums[i], Max);Min = min(nums[i], Min);} else { // 说明出现重复值return false;}}}return Max - Min <= 4;}
};

相关文章:

  • JVM之虚拟机运行
  • 飞搭系列 | 多对多关系一键配置, 轻松驾驭复杂场景
  • 小白的LLM学习记录(一)
  • Linux动态库静态库总结
  • 运行Spark程序-在shell中运行1
  • 如何通过外卖系统源码打造本地O2O外卖配送生态?全链路技术解析
  • Java练习题:String
  • python文件打包成exe文件
  • SQLMesh信号机制详解:如何精准控制模型评估时机
  • 笔记项目 day02
  • 【日撸 Java 300行】Day 14(栈)
  • Pytorch学习笔记(二十二)Audio - Audio I/O
  • 数据工具:数据同步工具、数据血缘工具全解析
  • 最终一致性和强一致性
  • 大模型—— FastGPT 知识库无缝集成到 n8n 工作流 (基于 MCP 协议)
  • 论文《Collaboration-Aware Graph Convolutional Network for Recommender Systems》阅读
  • NY182NY183美光固态颗粒NY186NY188
  • 推荐几个常用免费的文本转语音工具
  • 王炸组合!STL-VMD二次分解 + Informer-LSTM 并行预测模型
  • 物理:从人体组成角度能否说明基本粒子的差异性以及组织结构的可预设性?
  • 视频|王弘治:王太后,“先天宫斗圣体”?
  • 日月谭天丨这轮中美关税会谈让台湾社会看清了什么?
  • 人民日报仲音:大力纠治违规吃喝顽瘴痼疾
  • 王毅谈中拉论坛十年成果
  • 超新星|18岁冲击中超金靴,王钰栋的未来无限可能
  • 继71路之后,上海中心城区将迎来第二条中运量公交