java算法笔试题及答案
时间: 2023-09-12 12:00:37 浏览: 152
面试知识点总结--java笔试算法题及答案.pdf
Java算法笔试题及答案有很多种,以下是一个简单的例子:
题目:给定一个整数数组nums和一个目标值target,在数组中找出和为目标值的两个整数,并返回它们的索引。
解法:
```java
public int[] twoSum(int[] nums, int target) {
HashMap<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
int complement = target - nums[i];
if (map.containsKey(complement)) {
return new int[] {map.get(complement), i};
}
map.put(nums[i], i);
}
throw new IllegalArgumentException("No two sum solution");
}
```
解析:
该算法使用了哈希表来记录数组元素的值和索引。首先创建一个HashMap对象,然后遍历数组nums。在遍历过程中,计算目标值与当前元素的差值,并检查差值是否已经在哈希表中存在。如果存在,说明找到了符合条件的两个数,返回它们的索引;如果不存在,则将当前元素及其索引放入哈希表中以备后续使用。最后,如果没有找到符合条件的两个数,抛出一个IllegalArgumentException异常。
这个算法的时间复杂度是O(n),其中n是数组nums的长度。因为每个元素最多只遍历一次,而哈希表的访问时间是常数级别的。空间复杂度也是O(n),因为需要额外的哈希表存储元素的值和索引。
这只是一个简单的例子,实际的算法笔试题及答案可能更加复杂。不同的算法问题有不同的解法,可以根据具体的问题和要求灵活选择适合的算法。
阅读全文