当前位置: 首页 > 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;}
};

http://www.xdnf.cn/news/424765.html

相关文章:

  • 深入理解Java编写泛型的方法!
  • 杰理-701-手表sdk无法电脑连接经典蓝牙
  • 微信小程序的开发及问题解决
  • 游戏资源传输服务器
  • 第三章 初始化配置(一)
  • GitHub 趋势日报 (2025年05月12日)
  • 电能质量扰动信号信号通过hilbert变换得到瞬时频率
  • 2025.05.11拼多多机考真题算法岗-第一题
  • MCU开发学习记录14* - 8080学习与实践(HAL库) - 控制LCD屏幕显示中英文、图片 - STM32CubeMX
  • 【Axure视频教程】中继器表格间批量控制和传值
  • 艺考之神余嘉诚话剧舞台首秀《屈原辞》 倾情演绎楚辞风骨
  • [Java][Leetcode middle] 45. 跳跃游戏 II
  • 音频转文字-在线工具包及使用记录
  • 提示词设计模板(基于最佳实践)
  • Datawhale PyPOTS时间序列5月第1次笔记
  • 2025 3D工业相机选型及推荐
  • Elecron 相关介绍以及常见的面试问题
  • 【MapReduce入门】深度解析MapReduce:定义、核心特点、优缺点及适用场景
  • 1950-2024年中国区域的积温数据(大于10°)
  • 2025最新出版 Microsoft Project由入门到精通(七)
  • Unity 2D 行走动画示例工程手动构建教程-AI变成配额前端UI-完美游戏开发流程
  • 5月13日day24日打卡
  • 完成springBoot+vue项目时学习到的知识点
  • 嵌入式STM32学习——外部中断EXTI与NVIC的基础练习⭐
  • 机试刷题:进制转换3
  • 【Pandas】pandas DataFrame cummin
  • 蓝桥杯 11.日志统计
  • 亚远景-基于ASPICE的汽车供应链质量管控培训
  • 网站遭受扫描攻击,大量爬虫应对策略
  • C++伯罗奔尼撒箭阵 全国信息素养大赛复赛决赛 C++小学/初中组 算法创意实践挑战赛 内部集训模拟题详细解析