返回

征服剑指 Offer(专项突击版)第17|18题,敲开算法题大门!

前端

前端开发正以前所未有的速度蓬勃发展,对人才的要求也随之水涨船高。如今,面试前端工程师时,算法题已成为必不可少的考察内容。剑指 Offer(专项突击版)作为算法题的经典题库,备受求职者和技术爱好者的关注。为了帮助大家在面试和技术进阶中取得突破,我们特此带来剑指 Offer(专项突击版)第17|18题的详细解析。

剑指 Offer(专项突击版)第17题:打印从1到最大的n位数

题目输入数字n,按顺序打印从1到最大的n位十进制数。比如输入3,则打印出1、2、3、...、999。

题目解析:

  1. 确定最大的n位数:最大的n位数为9的n次方。

  2. 从1开始循环,每次循环将当前数字与最大的n位数比较。

  3. 如果当前数字小于最大的n位数,则将当前数字输出到控制台。

  4. 如果当前数字等于最大的n位数,则循环结束。

代码示例:

def print_n_digit_numbers(n):
    """
    打印从1到最大的n位数
    :param n: 数字n
    """
    # 确定最大的n位数
    max_n_digit_number = 9 ** n

    # 从1开始循环
    for i in range(1, max_n_digit_number + 1):
        # 将当前数字输出到控制台
        print(i)

# 调用函数
print_n_digit_numbers(3)

剑指 Offer(专项突击版)第18题:删除链表的节点

题目:给定一个链表,删除链表中等于给定值val的所有节点。

题目解析:

  1. 从链表的头节点开始遍历链表。

  2. 如果当前节点的值等于给定值val,则删除当前节点。

  3. 如果当前节点的值不等于给定值val,则将当前节点移动到下一个节点。

  4. 重复步骤2和步骤3,直到遍历完整个链表。

代码示例:

def delete_node(head, val):
    """
    删除链表中等于给定值val的所有节点
    :param head: 链表的头节点
    :param val: 给定值
    :return: 删除节点后的链表头节点
    """
    # 如果链表为空,则直接返回空链表
    if head is None:
        return None

    # 如果链表的头节点的值等于给定值,则删除链表的头节点
    if head.val == val:
        return head.next

    # 从链表的头节点开始遍历链表
    current_node = head

    # 找到当前节点的前一个节点
    while current_node.next is not None and current_node.next.val != val:
        current_node = current_node.next

    # 如果找到当前节点的前一个节点,则删除当前节点
    if current_node.next is not None and current_node.next.val == val:
        current_node.next = current_node.next.next

    # 返回删除节点后的链表头节点
    return head

# 调用函数
head = ListNode(1)
head.next = ListNode(2)
head.next.next = ListNode(3)
head.next.next.next = ListNode(4)
head.next.next.next.next = ListNode(5)

val = 3

new_head = delete_node(head, val)

# 打印删除节点后的链表
while new_head is not None:
    print(new_head.val)
    new_head = new_head.next

进阶建议:

  1. 熟练掌握算法题的解题思路和技巧。

  2. 定期练习算法题,提升解决问题的能力。

  3. 了解常见的算法题类型,以便在面试中快速识别和解决问题。

  4. 利用在线课程、书籍和网站等资源,不断扩展算法知识。

剑指 Offer(专项突击版)第17|18题是算法题练习的必经之路。通过对这两道题目的深入理解和掌握,您将为未来的技术进阶和面试挑战做好充分的准备。希望本文对您有所帮助,祝您在算法题的学习和实践中取得更大的进步。