问:如何反转链表? 答案:反转链表涉及更改其指针的方向,以便列表从最后一个元素开始并在第一个元素结束。 示例: 输入:1-> 2-> 3-> 4->无效的 输出:4-> 3-> 2-> 1->空 问:如何对排序数组执行二分查找? 答案:二分查找将数组反复分成两半,检查中间元素是否与目标匹配。 示例: 输入:数组 [1, 3, 5, 7, 9],目标 = 7 输出:3(索引为 7) 解决方法:检查中间元素;如果是目标,则返回索引。如果目标较小,则搜索左半部分;如果更大,则搜索右半部分。 问:如何找到字符串中的第一个唯一字符? 答案:要找到第一个唯一字符,请计算每个字符的出现次数并找出第一个仅出现一次的字符。 示例: 输入:“瑞士” 输出:“w” 解决方案:使用哈希图存储每个字符的出现频率,然后迭代字符串找到第一个计数为 1 的字符。 问:如何检测链表中的循环? 答案:要检测链表中的循环,请使用两个指针(慢指针和快指针)。如果有循环的话,快指针最终会遇到慢指针。 示例: 输入:1-> 2-> 3-> 4-> 2(循环) 输出:True(循环存在) 方法:使用 Floyd 的循环检测算法。快指针移动两步,慢指针移动一步。如果他们相遇,就会有一个循环。