锁定老帖子 主题:一个公司的Java面试题
精华帖 (0) :: 良好帖 (0) :: 隐藏帖 (3)
|
|
---|---|
作者 | 正文 |
发表时间:2010-05-28
public static void main(String[] args) {
int[] intArray = { 123, 123, 124, 125 }; int n; int count = 0; for (int i = 0; i < intArray.length; i++) { if (i < intArray.length - 1) { if (intArray[i] == intArray[i + 1]) { count++; } else { if (intArray[i] == intArray[i - 1]) { count++; } } } for (int j = 0; j < intArray.length - i - 1; j++) { if (intArray[j] > intArray[j + 1]) { n = intArray[j]; intArray[j] = intArray[j + 1]; intArray[j + 1] = n; } } } int max = intArray[intArray.length - 1]; int min = intArray[0]; if ((max - min) == intArray.length - count) { System.out.println("Success"); } else { System.out.println("faile"); } } |
|
返回顶楼 | |
发表时间:2010-05-28
/** * * TODO 给定一个int数组,写一个函数判断该数组中的所有数字是否能组成连续数字。 * 如[1,3,4,6,2,5]能组成连续数字,【1,2,5,4,7】不能。数组中的数也可能重复 * @param intArray * @return */ public static boolean canLine(int[] intArray) { if (intArray == null || intArray.length < 1) { return false; } Arrays.sort(intArray); for (int i = 0; i < intArray.length -1; i++) { if (!(intArray[i] + 1 == intArray[i + 1] || intArray[i] == intArray[i + 1])) { return false; } } return true; } |
|
返回顶楼 | |
发表时间:2010-06-01
boy00fly 写道 /** * * TODO 给定一个int数组,写一个函数判断该数组中的所有数字是否能组成连续数字。 * 如[1,3,4,6,2,5]能组成连续数字,【1,2,5,4,7】不能。数组中的数也可能重复 * @param intArray * @return */ public static boolean canLine(int[] intArray) { if (intArray == null || intArray.length < 1) { return false; } Arrays.sort(intArray); for (int i = 0; i < intArray.length -1; i++) { if (!(intArray[i] + 1 == intArray[i + 1] || intArray[i] == intArray[i + 1])) { return false; } } return true; } 这种方法应该是最简洁的,性能也不错! |
|
返回顶楼 | |
发表时间:2010-06-03
public class Line {
public static void main(String[] args) { int[] a = { 1, 1, 2, 5, 3, 8, 4 }; for (int i = 0; i < a.length; i++) { for (int j = 0; j < a.length; j++) { if (a[i] < a[j]) { int tmp = a[i]; a[i] = a[j]; a[j] = tmp; } } } int min = a[0]; int max = a[a.length - 1]; int first = 0; int end = 0; for (int i = 0; i < a.length; i++) { System.err.print(" " + a[i] + " "); if (i + 1 != a.length) { if ((a[i] == min && a[i + 1] != min)) { first = i; } if (a[i] == max && a[i + 1] == max) { end = i; break; } } else { end = i; } } System.err.println(first + "," + end); boolean flag = false; for (int i = first; i < end; i++) { flag = false; int tmp = a[i + 1] - a[i]; System.err.println("a[i+1]=" + a[i + 1]); System.err.println(tmp); if (tmp == 0 || tmp == 1) { flag = true; } } if (!flag) { System.err.println("無解"); } else { System.err.println("有解"); } } } |
|
返回顶楼 | |
发表时间:2010-06-30
最后修改:2010-06-30
王者之剑 写道 唉,已经有人给出了比较好的答案(kimmking,qhfu),后面还会冒出来一堆错误的,讨论问题,最可悲的事情莫过于此:连正确的答案都不知道是正确的,还有什么好讨论的?
qufu那代码写的让人蛋疼....(不过MIX,MIN初始化学习了,没这么用过,挺漂亮) 让我想起当年的90%的工程师写不出二分查找了... if (maxValue - minValue >= arrayLen - 1) { return false; } ... boolean isEnd = false; for (int index = 0; index < arrayLen; index++) { if (isEnd && bucketArray[index] > 0) {/*诡异的思路*/ return false; } if (bucketArray[index] == 0) { isEnd = true; } } return true; |
|
返回顶楼 | |
发表时间:2010-06-30
哇你长得真高 写道 max-min+1 == length
同意这个最简单 |
|
返回顶楼 | |
发表时间:2010-07-22
zhangyatong 写道 哇你长得真高 写道 max-min+1 == length
同意这个最简单 这个等式成立有个前提,数组中的元素不能给有重复的! |
|
返回顶楼 | |
发表时间:2010-07-22
int x=0; int [] ary={4,6,3,1,1,2,3,5,6,8,9,3,7}; Arrays.sort(ary); x=ary[0]; for (int i=0;i<ary.length;i++) { if(ary[i]-1 == x ) { x++; continue; } if(ary[i] == x)continue; else { System.out.println("数组不符合要求!"); break; } } if(ary[ary.length-1] == x ) System.out.println("数组为按顺序排列的数!"); |
|
返回顶楼 | |
发表时间:2010-09-15
public boolean isInARow1(int[] arr){
Arrays.sort(arr); for (int i = 0; i < arr.length - 1; i++) { if((arr[i+1] - arr[i]) != 1){ return false; } } return true; } 这种问题千万不能用大家都用的方法求解,否则你就杯具了... |
|
返回顶楼 | |
发表时间:2010-09-15
aaron0502 写道 public boolean isInARow1(int[] arr){
Arrays.sort(arr); for (int i = 0; i < arr.length - 1; i++) { if((arr[i+1] - arr[i]) != 1){ return false; } } return true; } 这种问题千万不能用大家都用的方法求解,否则你就杯具了... |
|
返回顶楼 | |