我想把这期作为数组类面试题的一个总结,题目不难,但是要注意不要犯错,下面是容易犯错的地方:

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. 各大公司数据结构与算法面试题解答(一)

    还有一年就要找工作了,从现在开始找些公司的数据结构和算法的题来做一做,不定时贴出笔试面试题代码. 1.创新工场: 求一个数组的最长递减子序列比如{9,4,3,2,5,4,3,2}的最长递减子序列为{9 ...

  2. 算法面试题解答(七)

    这篇讲关于链表的故事,先来一个经典的题目吧:链表反转: LinkedListNode * revertLinkedlist(LinkedListNode *list) {if(list == NULL ...

  3. 算法笔记_120:蓝桥杯第六届省赛(Java语言B组部分习题)试题解答

     目录 1 三角形面积 2 立方变自身 3 三羊献瑞 4 九数组分数 5 饮料换购 6 生命之树   前言:以下试题解答代码部分仅供参考,若有不当之处,还请路过的同学提醒一下~ 1 三角形面积 三角形 ...

  4. 算法笔记_110:第四届蓝桥杯软件类省赛真题(JAVA软件开发高职高专组部分习题)试题解答...

     目录 1 猜年龄 2 组素数 3 第39级台阶 4 核桃的数量 5 打印十字图 6 买不到的数目   前言:以下试题解答代码部分仅供参考,若有不当之处,还请路过的同学提醒一下~ 1 猜年龄 标题: ...

  5. 南开大学2014年高等代数部分试题解答

    南开大学2014年高等代数部分试题解答(本答案来自于张祖锦老师博客) 一.设$n$阶行列式$ \left|\begin{array}{cccc} {{a_{11}}} & {{a_{12}}} ...

  6. 武汉大学2010年数学分析试题解答

    武汉大学2010年数学分析试题解答 一. 1.解 $\underset{x\to 0}{\mathop{\lim }}\,\frac{\ln {{\left( 1+x \right)}^{\frac{ ...

  7. 乐视笔试算法题美团算法笔试题

    今天参加了乐视的校招笔试题有一道以前很熟悉的一道题记录一下 备注:今天乐视笔试好多图的选择题和线程间同步的方式一道选择题(上次总结过) 给定一个无序的整数数组,怎么找到第一个大于0,并且不在此数组的整 ...

  8. 【机器学习算法面试题】六.训练集、验证集、测试集的理解。

    欢迎订阅本专栏:<机器学习算法面试题> 订阅地址:https://blog.csdn.net/m0_38068876/category_11810806.html [机器学习算法面试题]一 ...

  9. 百度2014研发类校园招聘笔试题解答

    http://blog.csdn.net/lanxuezaipiao/article/details/42915285 先总体说下题型,共有3道简答题,3道算法编程题和1道系统设计题,题目有难有易,限 ...

最新文章

  1. OpenCV深度神经网络实现人体姿态评估
  2. 当代大学生对学习Linux的一点拙见
  3. 智能制造业乘风破浪,工业机器人怎样勇立潮头?
  4. .net网格怎么把值插入指定列表_Python列表有什么内置函数可以使用,怎么使用这些函数...
  5. VTK:PolyData之SelectPolyData
  6. centos php mcrypt_Centos 建议使用epel源
  7. 机器学习十大经典算法之逻辑回归
  8. Linux:ubuntu 下安装软件,卸载,查看已经安装的软件
  9. LeetCode50. Pow(x, n)(二进制位运算)
  10. discuz /faq.php SQL Injection Vul
  11. Linux学习之路(2-1)文件、目录与磁盘格式
  12. V8声卡软件调试教程
  13. PCB制图 | Altium Designer 20下载与安装
  14. 802.11无线WIFI协议学习笔记(一)
  15. 5个必考的大厂SQL面试题
  16. About Config
  17. 如何将微商相册上的所有图片和小视频快速下载和保存
  18. 什么,你还在用拼音命名法?
  19. 百度智慧医疗总经理黄艳:基层筛查、临床辅助决策和医疗数据结构化的阶段性进展...
  20. WEKA算法解析 -- PART决策树

热门文章

  1. 峰Redis学习(6)Redis 数据结构(sorted-set的操作)
  2. zabbix 3.2.3 appliance默认用户名及密码
  3. 通过经典题目来理解多种闭包实现方式
  4. oracle子接点与父节点上下级关系数据库查询语句,及联查询,
  5. inode及硬链接和软链接
  6. Magento 2.0 Alipay Cross-Border Mobile Payment Extension - Magento 2.0 支付宝跨境支付手机版...
  7. 与时俱进的治疗策略不断提高RA无药缓解机会[EULAR2015_SAT0058]
  8. 贪心算法——字典序最小问题
  9. TRANSACTIONAL TEXT INDEX全文索引可能消耗大量PGA内存
  10. 前端与移动开发之vue-day3(4)