c******t 发帖数: 391 | 1 在多次面试的online coding里都遇到这种情况,当实现一个返回值为int的搜索函数时
,有时会在if语句里判断是否符合搜索条件,如果符合即返回。但问题是,函数的
default返回值该怎样设,如果是搜索对象是数组下标,当然可以返回-1。但如果让返
回搜索的元素,该怎样解决呢?
举个例子,下面是一个用hashMap找数组里出现奇数次元素的代码(没测试):
public int findOdd(int[] arr){
HashMap map = new HashMap();
for(int i = 0; i
if(map.get(arr[i])==null)
map.put(arr[i],1);
else{
map.put(arr[i],map.get(arr[i])+1);
}
}
for(Map.Entry item:map){
if(item.getValue()%2==1)
return item.getKey();
}
}
return ?;
}
应该是个挺简单的问题,但每次临场写代码时总会撞到这个死胡同里,所以想请教下大
家,多谢了! |
h****n 发帖数: 2094 | 2 返回null
【在 c******t 的大作中提到】 : 在多次面试的online coding里都遇到这种情况,当实现一个返回值为int的搜索函数时 : ,有时会在if语句里判断是否符合搜索条件,如果符合即返回。但问题是,函数的 : default返回值该怎样设,如果是搜索对象是数组下标,当然可以返回-1。但如果让返 : 回搜索的元素,该怎样解决呢? : 举个例子,下面是一个用hashMap找数组里出现奇数次元素的代码(没测试): : public int findOdd(int[] arr){ : HashMap map = new HashMap(); : for(int i = 0; i: if(map.get(arr[i])==null) : map.put(arr[i],1);
|
c******t 发帖数: 391 | 3 多谢回复!
但返回null会报错啊(Type mismatch: cannot convert from null to int),除非cast
成(int)null,感觉很奇怪。。。
【在 h****n 的大作中提到】 : 返回null
|
h****n 发帖数: 2094 | 4 一般都是object array吧。如果是int array return index is good enough...
cast
【在 c******t 的大作中提到】 : 多谢回复! : 但返回null会报错啊(Type mismatch: cannot convert from null to int),除非cast : 成(int)null,感觉很奇怪。。。
|
l*****a 发帖数: 14598 | 5 int/Integer混用是什么技巧?
【在 c******t 的大作中提到】 : 在多次面试的online coding里都遇到这种情况,当实现一个返回值为int的搜索函数时 : ,有时会在if语句里判断是否符合搜索条件,如果符合即返回。但问题是,函数的 : default返回值该怎样设,如果是搜索对象是数组下标,当然可以返回-1。但如果让返 : 回搜索的元素,该怎样解决呢? : 举个例子,下面是一个用hashMap找数组里出现奇数次元素的代码(没测试): : public int findOdd(int[] arr){ : HashMap map = new HashMap(); : for(int i = 0; i: if(map.get(arr[i])==null) : map.put(arr[i],1);
|
S**********e 发帖数: 503 | 6 "找数组里出现奇数次元素的代码"
不是应该返回一个数组或集合吗?出现奇数次元素可能不只一个。貌似函数的返回值定
义不恰当。要么抛出异常,如果找不到。
【在 c******t 的大作中提到】 : 在多次面试的online coding里都遇到这种情况,当实现一个返回值为int的搜索函数时 : ,有时会在if语句里判断是否符合搜索条件,如果符合即返回。但问题是,函数的 : default返回值该怎样设,如果是搜索对象是数组下标,当然可以返回-1。但如果让返 : 回搜索的元素,该怎样解决呢? : 举个例子,下面是一个用hashMap找数组里出现奇数次元素的代码(没测试): : public int findOdd(int[] arr){ : HashMap map = new HashMap(); : for(int i = 0; i: if(map.get(arr[i])==null) : map.put(arr[i],1);
|