网易有道一面java
前面都是基础的问题,直接略过
代码题1.
给定数组arr,还有一个target,让你找出数组中两个数让他们的和等于target,找出所有的组合
开始说了排序+首尾指针(O(nlogn))
面试官问有O(n)的吗?
hash表实现,说了思路没让手撕
代码题2.
数组arr,一个树只出现了一次,其他的数出现了k次,求出这一个数
限定时间O(n),空间O(1)
统计二进制每一位的1的次数,最后的结果就是出现一次的数
后来自己有些了代码,贴上来
public static int findTheOne(int[] arr,int k){
int res = 0;
int temp = 1;
int max = Integer.MIN_VALUE;
for (int i = 0; i < arr.length; i++) {
max = Math.max(max,arr[i]);
}
int length = arr.length;
while (max > 0){
int sum = 0;
for (int i = 0; i < length; i++) {
if ((arr[i] & 1) == 1){
++sum;
}
arr[i] = arr[i] >> 1;
}
if (sum % k == 1){
res += temp;
}
temp = temp << 1;
max = max >> 1;
}
return res;
} 给了提示之后写了代码
#面经##校招##网易##Java工程师#
迅雷公司福利 193人发布
