算法面试题解答(六)
我想把这期作为数组类面试题的一个总结,题目不难,但是要注意不要犯错,下面是容易犯错的地方:
1. ++,--后索引有可能不满足我们假设的条件,一般情况都需要判断,使用while,for,if进行条件检查;
2. ++,-- 和break或者continue配合时,可别搞乱了顺序
题目1: Given an array with positive, negative and zeros, arrange the given array such that negatives are on left, zeros in the middle and positives on the right.
打眼一看,这个问题特别简单,不就是两头遍历,然后交换吗,确实是这样子,思想特别简单,但是实现起来就容易出错了,下面是我的版本:
#include <iostream>using namespace std;void groupInteger(int *data, int len) {int i = 0, j = len-1;while(i<j){if(data[i]<0 ) i++;if(data[j]>=0) j--;if(data[i]>=0 && data[j]<0 && i<j) //不要落了i<j这个条件,因为前面有i++ 和 j++,而且一旦不满足i<j这个条件,我们不应该做swapswap(data[i++], data[j--]);}i = j;if(data[j]<0) //这里的i应该从什么地方开始呢?这需要我们对上一个while循环的结束条件非常了解,data[j]>=0 或者 swap后j的位置或者j本身>=0,或者j+1的位置>=0i++;j = len -1;while(i<j){if(data[i]==0 ) i++;if(data[j]>0) j--;if(data[i]>0 && data[j]==0 && i<j) //交换的条件是什么? 因为跟上面的代码非常类似,很容易Copy过来,但这也是容易导致错误的地方swap(data[i++], data[j--]);} }int main(int argc, char **argv) {int src[] = {1,2,3,1,2,3};groupInteger(src,sizeof(src)/sizeof(int));for(int i= 0 ;i<sizeof(src)/sizeof(int);i++)cout<<src[i]<<",";cout<<endl; }
这个题目也是很有意思的,设计一下测试用例吧(这里只是验证功能,所以就只设计Functional cases):
1, {-1,0,2}
2, {2,0,-1,}
3, {-2,-2,3}
4, {-1,2}
5, {-1,0}
6, {1,2,3}
7, {0,0,0,0}
8, {-1,-2,-3,-4}
转载于:https://www.cnblogs.com/whyandinside/archive/2012/12/18/2823664.html
算法面试题解答(六)相关推荐
- 各大公司数据结构与算法面试题解答(一)
还有一年就要找工作了,从现在开始找些公司的数据结构和算法的题来做一做,不定时贴出笔试面试题代码. 1.创新工场: 求一个数组的最长递减子序列比如{9,4,3,2,5,4,3,2}的最长递减子序列为{9 ...
- 算法面试题解答(七)
这篇讲关于链表的故事,先来一个经典的题目吧:链表反转: LinkedListNode * revertLinkedlist(LinkedListNode *list) {if(list == NULL ...
- 算法笔记_120:蓝桥杯第六届省赛(Java语言B组部分习题)试题解答
目录 1 三角形面积 2 立方变自身 3 三羊献瑞 4 九数组分数 5 饮料换购 6 生命之树 前言:以下试题解答代码部分仅供参考,若有不当之处,还请路过的同学提醒一下~ 1 三角形面积 三角形 ...
- 算法笔记_110:第四届蓝桥杯软件类省赛真题(JAVA软件开发高职高专组部分习题)试题解答...
目录 1 猜年龄 2 组素数 3 第39级台阶 4 核桃的数量 5 打印十字图 6 买不到的数目 前言:以下试题解答代码部分仅供参考,若有不当之处,还请路过的同学提醒一下~ 1 猜年龄 标题: ...
- 南开大学2014年高等代数部分试题解答
南开大学2014年高等代数部分试题解答(本答案来自于张祖锦老师博客) 一.设$n$阶行列式$ \left|\begin{array}{cccc} {{a_{11}}} & {{a_{12}}} ...
- 武汉大学2010年数学分析试题解答
武汉大学2010年数学分析试题解答 一. 1.解 $\underset{x\to 0}{\mathop{\lim }}\,\frac{\ln {{\left( 1+x \right)}^{\frac{ ...
- 乐视笔试算法题美团算法笔试题
今天参加了乐视的校招笔试题有一道以前很熟悉的一道题记录一下 备注:今天乐视笔试好多图的选择题和线程间同步的方式一道选择题(上次总结过) 给定一个无序的整数数组,怎么找到第一个大于0,并且不在此数组的整 ...
- 【机器学习算法面试题】六.训练集、验证集、测试集的理解。
欢迎订阅本专栏:<机器学习算法面试题> 订阅地址:https://blog.csdn.net/m0_38068876/category_11810806.html [机器学习算法面试题]一 ...
- 百度2014研发类校园招聘笔试题解答
http://blog.csdn.net/lanxuezaipiao/article/details/42915285 先总体说下题型,共有3道简答题,3道算法编程题和1道系统设计题,题目有难有易,限 ...
最新文章
- OpenCV深度神经网络实现人体姿态评估
- 当代大学生对学习Linux的一点拙见
- 智能制造业乘风破浪,工业机器人怎样勇立潮头?
- .net网格怎么把值插入指定列表_Python列表有什么内置函数可以使用,怎么使用这些函数...
- VTK:PolyData之SelectPolyData
- centos php mcrypt_Centos 建议使用epel源
- 机器学习十大经典算法之逻辑回归
- Linux:ubuntu 下安装软件,卸载,查看已经安装的软件
- LeetCode50. Pow(x, n)(二进制位运算)
- discuz /faq.php SQL Injection Vul
- Linux学习之路(2-1)文件、目录与磁盘格式
- V8声卡软件调试教程
- PCB制图 | Altium Designer 20下载与安装
- 802.11无线WIFI协议学习笔记(一)
- 5个必考的大厂SQL面试题
- About Config
- 如何将微商相册上的所有图片和小视频快速下载和保存
- 什么,你还在用拼音命名法?
- 百度智慧医疗总经理黄艳:基层筛查、临床辅助决策和医疗数据结构化的阶段性进展...
- WEKA算法解析 -- PART决策树
热门文章
- 峰Redis学习(6)Redis 数据结构(sorted-set的操作)
- zabbix 3.2.3 appliance默认用户名及密码
- 通过经典题目来理解多种闭包实现方式
- oracle子接点与父节点上下级关系数据库查询语句,及联查询,
- inode及硬链接和软链接
- Magento 2.0 Alipay Cross-Border Mobile Payment Extension - Magento 2.0 支付宝跨境支付手机版...
- 与时俱进的治疗策略不断提高RA无药缓解机会[EULAR2015_SAT0058]
- 贪心算法——字典序最小问题
- TRANSACTIONAL TEXT INDEX全文索引可能消耗大量PGA内存
- 前端与移动开发之vue-day3(4)