数组中重复的数字 java
2016-07-17 22:28
274 查看
题目描述
在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3。解法1:使用map来记录重复数字即可,由于数字的大小在0-n-1之内,可以使用数组来代替map
public boolean duplicate(int numbers[], int length, int[] duplication) { duplication[0] = -1; if (length <= 1) { return false; } int[] flag = new int[length + 1]; for (int i = 0; i < length; i++) { flag[numbers[i]]++; if (flag[numbers[i]] > 1) { duplication[0] = numbers[i]; return true; } } return false; }
相关文章推荐
- 面试题3:二维数组中的查找
- 面试题四:替换空格
- 剑指offer第一题
- 剑指Offer 面试题3:二维数组中查找
- 从尾到头打印链表
- 二叉树两个结点的最低公共祖先
- 根据后序和中序遍历重建二叉树
- 根据先序和中序遍历重建二叉树
- 根据先序和中序遍历重建二叉树
- 根据后序和中序遍历重建二叉树
- 二叉树两个结点的最低公共祖先
- 《剑指Offer》面试题1:赋值运算符函数
- 剑指offer第三题:二维数组中查找
- 剑指offer 重建二叉树 java实现
- 剑指offer 替换空格 java实现
- 九度 Online Judge 之《剑指 Offer》一书相关题目解答
- 剑指offer 二维数组中的查找
- 剑指offer 调整数组顺序使奇数位于偶数前面
- 【练习笔记】剑指offer-面试题8 :旋转数组的最小数字
- 【练习笔记】剑指offer-变态跳台阶