剑指offer例题分享--6
前言:继续整理例题,快速做完这部分,然后继续用C++去刷数据结构和算法的题。
面试题28:
代码如下:
#include<iostream> #include<stdio.h> using namespace std; void Permutation(char *pStr,char *pBegin) { if(*pBegin == '\0') { printf("str:%s\n",pStr); } else { for(char *pCh=pBegin;*pCh!='\0';++pCh) { char temp = *pCh; *pCh = *pBegin; *pBegin = temp; Permutation(pStr,pBegin+1); temp = *pCh; *pCh = *pBegin; *pBegin = temp; } } } void Permutation(char *pStr) { if(pStr == NULL) return; Permutation(pStr,pStr); } int main() { char buf[32]="asd"; Permutation(buf); return 0; }
面试题29:
代码如下:
/************************************************************************* > File Name: 29.cpp > Author: ma6174 > Mail: ma6174@163.com > Created Time: Tue 14 Aug 2018 09:45:42 AM CST ************************************************************************/ #include<iostream> using namespace std; bool g_bInputInvalid =false; bool CheckInvalidArray(int *numbers,int len) { if(numbers==NULL && len<=0) g_bInputInvalid = true; return g_bInputInvalid; } bool CheckMoreThanHalf(int *numbers,int len,int num) { int times = 0; for(int i=0;i<len;++i) { if(numbers[i] == num) times++; } bool isMoreThanHalf = true; if(times*2 < len) { g_bInputInvalid = true; isMoreThanHalf = false; } return isMoreThanHalf; } int MoreThanHalfNum(int *numbers,int len) { if(CheckInvalidArray(numbers,len)) return 0; int result = numbers[0]; int times = 1; for(int i=1;i<len;++i) { if(times == 0) { result = numbers[i]; times = 1; } else if(numbers[i] == result) times++; else times--; } if(!CheckMoreThanHalf(numbers,len,result)) result = 0; return result; } int main() { int data[]={1,2,5,6,2,2,2}; cout << "num: " << MoreThanHalfNum(data,7) << endl;; return 0; }
面试题30:
分析:一定要对C++的STL熟悉,才能看明白如下代码:
#include<iostream> #include<set> #include<vector> #include<algorithm> #include<iterator> using namespace std; //greater<int>()是一个预定义函数对象,将multiset容器从大到小排序 typedef multiset<int,greater<int> > intSet; typedef multiset<int,greater<int> >::iterator setIterator; void GetLeastNumbers(const vector<int> &data,intSet &leastNumbers,int k) { //清空容器 leastNumbers.clear(); if(k<1 || data.size()<k) return; //创建迭代器 vector<int>::const_iterator iter = data.begin(); for(;iter!=data.end();++iter) { //小于k插入容器 if((leastNumbers.size())<k) leastNumbers.insert(*iter); else{ setIterator iteraCreatest = leastNumbers.begin(); //如果插入的数比容器中的最大值小,则删除 if(*iter < *(leastNumbers.begin())) { leastNumbers.erase(iteraCreatest); leastNumbers.insert(*iter); } } } } int main() { vector<int> data(4); data[0] = 1; data[1] = 8; data[2] = 9; data[3] = 2; intSet set; GetLeastNumbers(data,set,2); //iterate over all elements and print them intSet::iterator pos; for (pos = set.begin(); pos != set.end(); ++pos) { cout << *pos << ' '; } cout << endl; return 0; }
-------------------------------------------
个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!
万水千山总是情,打赏一分行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主,哈哈哈(っ•̀ω•́)っ⁾⁾!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
区块链开发公司为企业带来哪些商业机会
区块链盛行的时代,目前已经有不少企业推出自己的区块链产品,现在区块链产品市场中,有些技术厂商号称自己的产品是区块链,可实际上,也许只是用了分布式存储而已。离开激励机制和共识机制的区块链,实际上就是物联网的一种,而不具备区块链的实质。但因为缺乏行业标准和对技术实际应用的预判,人们也很难给出有效鉴别的必要。 第一个机会,硬件的开发。比如著名的华强北商业区,现在已经很少再销售我们传统认知的电脑、笔记本以及相关的电子产品了,而是借区块链这个新生势力,开始售卖区块链相关的硬件产品。很多炒币的人肯定都挖过矿,挖矿就一定需要电脑、路由器等。而我们正常使用的电脑,硬件和系统都不够用来挖矿,所以就有了这种专门为区块链挖矿而诞生的硬件电脑。 其实这里还衍生出来了一个附加的商业机会,“代挖矿业务”。大家也可以理解为代运营,就是由于你的硬件条件不给力,就付费租用我的场地、硬件和人工,替你来挖矿。 第二个商业机会,就是软件开发。现在很多平台都在研究这种技术,甚至连星巴克这种和区块链关联性不大的企业都在研究这项技术。想要研究这项技术,就需要独立的系统,那么就不可避免的需要软件开发。 第三个商业机会,交易平台的研发...
-
下一篇
安全预警:独立发布的Oracle严重 CVE-2018-3110 公告
在 2018年8月10日,Oracle 独立的发送了一封"安全警告"邮件给所有的 Oracle 用户,这封邮件的标题是:Oracle Security Alert for CVE-2018-3110。这也是今年 Oracle 第一次独立针对一个 CVE 安全风险发布预警。 正常情况下,Oracle 每个季度发布一次安全补丁更新,今年的下一次发布应该在10月16日。所以针对 CVE-2018-3110 的预警就非常值得大家重视。 CVE 的英文全称是“Common Vulnerabilities & Exposures”公共漏洞和暴露。CVE就好像是一个字典表,为广泛认同的信息安全漏洞或者已经暴露出来的弱点给出一个公共的名称。帮助用户在各自独立的各种漏洞数据库中和漏洞评估工具中共享数据,CVE因此成为了安全信息共享的“关键字”。在一个漏洞报告中指明的一个漏洞,如果有CVE名称,你就可以快速地在任何其它CVE兼容的数据库中找到相应修补的信息,解决安全问题。 预警的邮件内容如下: 影响范围和版本 CVE-2018-3110 影响范围是所有当前在支持的数据库版本,但是一部分版本已经在2...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- MySQL数据库在高并发下的优化方案
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Dcoker安装(在线仓库),最新的服务器搭配容器使用
- Docker容器配置,解决镜像无法拉取问题
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Docker快速安装Oracle11G,搭建oracle11g学习环境