剑指offer面试题之扑克牌顺子
2016-04-05 16:22
316 查看
1,问题:
从扑克牌中任意挑选五张牌,看是不是一个顺子,A看成1,K看成13,大小王看成任意数字。在这里用0代表大小王。
2,想法:
先把数字排序,扫描数组,
记录0的个数,
同时若在扫描时遇到非0的相等数,则肯定不是一个顺子,
同时也要记录相邻两个数之间的间隔,比如1和3之间就间隔一个数2,
这样我们扫描完后,看0的个数是否等于间隔个数就可判断。
3,编码:
从扑克牌中任意挑选五张牌,看是不是一个顺子,A看成1,K看成13,大小王看成任意数字。在这里用0代表大小王。
2,想法:
先把数字排序,扫描数组,
记录0的个数,
同时若在扫描时遇到非0的相等数,则肯定不是一个顺子,
同时也要记录相邻两个数之间的间隔,比如1和3之间就间隔一个数2,
这样我们扫描完后,看0的个数是否等于间隔个数就可判断。
3,编码:
class Solution { public: bool IsContinuous( vector<int> numbers ) { if (numbers.size() < 5) { return false; } int numberof0 = 0; bool flag = false;//标记是否有重复的非0数字 int numberofgap = 0;//记录间隔个数 sort(numbers.begin(), numbers.end());//排序 unsigned int i = 0; while (i < numbers.size() && numbers[i] == 0) { numberof0++; i++; } for (i = i + 1; i < numbers.size(); i++) { if (numbers[i] == numbers[i - 1]) { flag = true; break; } else { numberofgap += numbers[i] - numbers[i - 1] - 1; } } if (flag) { return false; } else if (numberof0 >= numberofgap) { return true; } else return false; } };
相关文章推荐
- PHP程序员课程大纲
- 程序员应该关注的一些事儿
- JAVA多线程和并发基础面试问答(转)
- 码农小汪-剑指Offer之34 -两个链表的第一个公共结点 hashMap
- 面试注意事项
- 2016-4-05阿里电话面试
- 困了,累了,职业倦怠期来了
- 困了,累了,职业倦怠期来了
- 国外程序员整理的机器学习资源大全
- 每个程序员都应该知道的 16个最佳 PHP 库
- 要学!要会!!要练!!!--程序员笔试面试知识梳理
- 如何用10只实验鼠检测出1000个药瓶中哪个有毒药?
- 开发无框架单页面应用 — 老码农的祖传秘方
- Java面试题大全(四)
- Java面试题大全(三)
- Java面试题大全(二)
- [JSOI2009]面试的考验 解题报告
- LeetCode之旅(22)-House Robber
- Java面试题大全(一)
- 关于测试人员的职业发展