### 超级大脑算法练习题
超级大脑项目是一个综合性的编程实践平台,旨在通过解决实际问题来提升编程能力。以下是一些与超级大脑相关的算法练习题,涵盖常见的算法思想和实现方法[^3]。
#### 练习题 1:数组去重
编写一个函数,接收一个整数数组作为输入,并返回一个去重后的数组。
```python
def remove_duplicates(arr):
return list(set(arr))
# 示例
print(remove_duplicates([1, 2, 3, 2, 4, 1])) # 输出: [1, 2, 3, 4]
```
#### 练习题 2:两数之和
给定一个整数数组 `nums` 和一个目标值 `target`,请从数组中找出两个数,使得它们的和为目标值,并返回这两个数的索引。
```python
def two_sum(nums, target):
num_to_index = {}
for i, num in enumerate(nums):
complement = target - num
if complement in num_to_index:
return [num_to_index[complement], i]
num_to_index[num] = i
# 示例
print(two_sum([2, 7, 11, 15], 9)) # 输出: [0, 1]
```
#### 练习题 3:字符串反转
编写一个函数,接收一个字符串作为输入,并返回该字符串的反转结果。
```python
def reverse_string(s):
return s[::-1]
# 示例
print(reverse_string("hello")) # 输出: "olleh"
```
#### 练习题 4:斐波那契数列
编写一个函数,接收一个整数 `n` 作为输入,并返回第 `n` 个斐波那契数。
```python
def fibonacci(n):
if n <= 0:
return 0
elif n == 1:
return 1
a, b = 0, 1
for _ in range(2, n + 1):
a, b = b, a + b
return b
# 示例
print(fibonacci(10)) # 输出: 55
```
#### 练习题 5:最大子数组和
给定一个整数数组 `nums`,找到一个具有最大和的连续子数组,并返回其最大和。
```python
def max_subarray(nums):
current_sum = max_sum = nums[0]
for num in nums[1:]:
current_sum = max(num, current_sum + num)
max_sum = max(max_sum, current_sum)
return max_sum
# 示例
print(max_subarray([-2, 1, -3, 4, -1, 2, 1, -5, 4])) # 输出: 6
```
### 算法练习的意义
通过解决这些算法问题,可以提高对数据结构和算法的理解,同时培养解决问题的能力。LeetCode等平台提供了丰富的题目资源,是提升编程技能的重要途径。