在编程的道路上,掌握一门编程语言是基础中的基础。而为了巩固和提高编程能力,解决一些经典题目是非常有帮助的。以下是一些经典题解,它们不仅能够帮助你加深对编程语言的理解,还能提升你的编程技能。
1. 回文数
题目描述
判断一个整数是否是回文数。回文数是指正读和反读都相同的数。
示例
- 输入:121
- 输出:是回文数
Python 代码
def is_palindrome(x):
return str(x) == str(x)[::-1]
2. 两数之和
题目描述
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。
示例
- 输入:nums = [2, 7, 11, 15], target = 9
- 输出:[0, 1]
Python 代码
def two_sum(nums, target):
seen = {}
for i, num in enumerate(nums):
if target - num in seen:
return [seen[target - num], i]
seen[num] = i
3. 无重复字符的最长子串
题目描述
给定一个字符串 s ,找出其中不含有重复字符的最长子串的长度。
示例
- 输入:s = “abcabcbb”
- 输出:3
Python 代码
def length_of_longest_substring(s):
char_set = set()
left = 0
max_len = 0
for right in range(len(s)):
while s[right] in char_set:
char_set.remove(s[left])
left += 1
char_set.add(s[right])
max_len = max(max_len, right - left + 1)
return max_len
4. 买卖股票的最佳时机
题目描述
给定一个数组,它的第 i 个元素是一支给定股票当天收盘价。设计一个算法来计算你所能获取的最大利润。
示例
- 输入:prices = [7, 1, 5, 3, 6, 4]
- 输出:5
Python 代码
def max_profit(prices):
min_price = float('inf')
max_profit = 0
for price in prices:
min_price = min(min_price, price)
max_profit = max(max_profit, price - min_price)
return max_profit
5. 合并区间
题目描述
以数组形式给出若干个区间,请合并所有重叠的区间。
示例
- 输入:intervals = [[1,3],[2,6],[8,10],[15,18]]
- 输出:[[1,6],[8,10],[15,18]]
Python 代码
def merge(intervals):
if not intervals:
return []
intervals.sort(key=lambda x: x[0])
merged = [intervals[0]]
for current in intervals[1:]:
last = merged[-1]
if last[1] >= current[0]:
merged[-1] = [last[0], max(last[1], current[1])]
else:
merged.append(current)
return merged
通过这些经典题目的练习,你可以更加熟练地运用你所学的编程语言,并在实际工作中更好地解决问题。记住,编程是一门实践性很强的技能,不断地练习和总结是提升的关键。
