论坛首页 招聘求职论坛

一个公司的Java面试题

浏览 44444 次
精华帖 (0) :: 良好帖 (0) :: 隐藏帖 (3)
作者 正文
   发表时间:2010-05-27   最后修改:2010-05-27
fairplay 写道

class findValue {   
       
    static main(args){   
               
        int[] a= [1,3,3,2,4,6];   
        int[] b= [1,5,4,2,3,3];   
           
        a=Arrays.asList(a).sort().toArray();   
        b=Arrays.asList(b).sort().toArray();   
           
        check(a);   
        check(b);   
    }   
       
    static check(int[] a){
        for(i in 0..a.length-2){
            if((a[i+1]-a[i]==1)||a[i+1]==a[i]){   
            }else{
                println('该数组不连续:'+a);   
                break;   
            }
        }   
    }   
       
} 

该数组不连续:[1, 2, 3, 3, 4, 6]



这是java代码吗???我大概的看了一下,语法错误太多了,伪代码吧!不过思路是对的。
a=Arrays.asList(a).sort().toArray(); 
        b=Arrays.asList(b).sort().toArray(); 
这两句应该改成: Arrays.sort(a);
Arrays.sort(b);没必要转化成List了吧,list压根没有sort()方法!

          
0 请登录后投票
   发表时间:2010-05-27  
public static boolean isSequenceNumber(int[] array) {
int arrayLen = array.length;
int maxValue = Integer.MIN_VALUE;
int minValue = Integer.MAX_VALUE;
for (int index = 0; index < arrayLen; index++) {
if (maxValue < array[index]) {
maxValue = array[index];
}
if (minValue > array[index]) {
minValue = array[index];
}
}

if (maxValue - minValue >= arrayLen - 1) {
return false;
}

int[] bucketArray = new int[arrayLen];
for (int index = 0; index < arrayLen; index++) {
if (bucketArray[array[index] - minValue] == 0) {
bucketArray[array[index] - minValue] += 1;
}
}

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;
}
0 请登录后投票
   发表时间:2010-05-27   最后修改:2010-05-27
//1.确定不重复 2.(max - min + 1) == nums.length 3. 1~9之间

int[] nums = [1, 3, 2, 4, 6]

int a[9] = {0};
int min=0, max=0;

for( int i : nums){
	if(i<=0 || i>9){
		return "不连续"
	}
	else{
		if(a[i-1]==0){
			a[i-1]=1
		}else{
			return "不连续"
		}
		if(i < min){min = i;}
		if(i > max){max = i;}
	}
	
}

if((max - min + 1) == nums.length){
	return "连续"
}else{
	return "不连续"
}


ps: 我有一个疑问:[1,23,45]是否也满足要求呢?
0 请登录后投票
   发表时间:2010-05-27   最后修改:2010-05-27
先排序后在连续两个数比较
0 请登录后投票
   发表时间:2010-05-27   最后修改:2010-05-27
ryxxlong 写道
fairplay 写道

class findValue {   
       
    static main(args){   
               
        int[] a= [1,3,3,2,4,6];   
        int[] b= [1,5,4,2,3,3];   
           
        a=Arrays.asList(a).sort().toArray();   
        b=Arrays.asList(b).sort().toArray();   
           
        check(a);   
        check(b);   
    }   
       
    static check(int[] a){
        for(i in 0..a.length-2){
            if((a[i+1]-a[i]==1)||a[i+1]==a[i]){   
            }else{
                println('该数组不连续:'+a);   
                break;   
            }
        }   
    }   
       
} 

该数组不连续:[1, 2, 3, 3, 4, 6]



这是java代码吗???我大概的看了一下,语法错误太多了,伪代码吧!不过思路是对的。
a=Arrays.asList(a).sort().toArray();  
        b=Arrays.asList(b).sort().toArray();  
这两句应该改成: Arrays.sort(a);
Arrays.sort(b);没必要转化成List了吧,list压根没有sort()方法!

          


这个是groovy代码吧
0 请登录后投票
   发表时间:2010-05-27  
aws 写道
ryxxlong 写道
fairplay 写道

class findValue {   
       
    static main(args){   
               
        int[] a= [1,3,3,2,4,6];   
        int[] b= [1,5,4,2,3,3];   
           
        a=Arrays.asList(a).sort().toArray();   
        b=Arrays.asList(b).sort().toArray();   
           
        check(a);   
        check(b);   
    }   
       
    static check(int[] a){
        for(i in 0..a.length-2){
            if((a[i+1]-a[i]==1)||a[i+1]==a[i]){   
            }else{
                println('该数组不连续:'+a);   
                break;   
            }
        }   
    }   
       
} 

该数组不连续:[1, 2, 3, 3, 4, 6]



这是java代码吗???我大概的看了一下,语法错误太多了,伪代码吧!不过思路是对的。
a=Arrays.asList(a).sort().toArray();  
        b=Arrays.asList(b).sort().toArray();  
这两句应该改成: Arrays.sort(a);
Arrays.sort(b);没必要转化成List了吧,list压根没有sort()方法!

          


这个是groovy代码吧


原来如此,唉,真是井底之蛙啊,惭愧 !!!!!!!
0 请登录后投票
   发表时间:2010-05-27   最后修改:2010-05-27
说下我的思路:
循环一遍,放到Set中,记下Set集长度setLenth,同时将最大值max最小值min拿到
当且仅当max-min+1=setLenth满足条件
不知道我这个思路有没有问题,望指出问题!
0 请登录后投票
   发表时间:2010-05-27  
当然是拿到最大最小数,算出中间间隔的数。
将数组剔除重复数字后,比较长度是否相等
0 请登录后投票
   发表时间:2010-05-27  
2022228 写道
当然是拿到最大最小数,算出中间间隔的数。
将数组剔除重复数字后,比较长度是否相等

看看你上面的回帖,是不是你想要表达的意思
0 请登录后投票
   发表时间:2010-05-27  
放入set
两端的值的差除以set的size
0 请登录后投票
论坛首页 招聘求职版

跳转论坛:
Global site tag (gtag.js) - Google Analytics