前面都是基础的问题,直接略过
代码题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; }
给了提示之后写了代码
全部评论
(3) 回帖