💡
原文英文,约900词,阅读约需3分钟。
📝
内容提要
本文介绍了十个编程题,包括两数之和、反转链表、查找第一个不重复字符、FizzBuzz、用两个队列实现栈、二叉树深度、停车系统设计、LRU缓存、计算数组中不同元素数量和旋转数组。每个题目附有示例代码和练习建议。
🎯
关键要点
- 1. 两数之和问题:编写一个方法,返回两个数的索引,使其和等于目标值。
- 2. 反转链表:编写一个函数,反转单链表。
- 3. 查找第一个不重复字符:编写一个方法,返回字符串中第一个不重复的字符。
- 4. FizzBuzz:打印从1到n的数字,满足条件时打印特定字符串。
- 5. 用两个队列实现栈:实现一个后进先出(LIFO)的栈,仅使用两个先进先出(FIFO)的队列。
- 6. 二叉树深度:编写一个函数,查找二叉树的深度。
- 7. 设计停车系统:设计一个停车系统,检查是否有空间停放不同类型的车辆。
- 8. 实现LRU缓存:使用字典和链表实现最近最少使用(LRU)缓存。
- 9. 计算数组中不同元素数量:计算数组中不同元素的数量。
- 10. 旋转数组:编写一个函数,将数组向右旋转k次。
❓
延伸问答
如何解决两数之和问题?
编写一个方法,使用字典存储数字及其索引,查找两个数的索引,使其和等于目标值。
反转链表的基本思路是什么?
使用指针遍历链表,将当前节点的指针指向前一个节点,直到遍历完成。
如何查找字符串中的第一个不重复字符?
使用字典统计每个字符的出现频率,然后遍历字符串返回第一个频率为1的字符。
FizzBuzz问题的解决方法是什么?
打印从1到n的数字,若数字能被3整除打印'Fizz',能被5整除打印'Buzz',能被3和5整除打印'FizzBuzz'。
如何用两个队列实现栈?
使用两个队列,先将新元素加入第二个队列,然后将第一个队列的所有元素转移到第二个队列,最后交换两个队列。
设计停车系统需要考虑哪些因素?
需要设计不同类型车辆的停车位,并实现检查是否有空间停放的功能。
➡️