摘要:
题目:定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。 注: 分三种情况: 1、链表头节点为空或只有一个节点,此时直接返回头节点即可 2、链表只有两个节点,此时只要反转一次,然后返回尾结点即可 3、大于等于3个节点,使用三个指针分别指向当前节点,前一个节点和后一个节点,每次前 阅读全文
摘要:
题目:如果一个链表中包含环,如何找出环的入口节点。 注: 本题要找出环的入口节点,主要分三步: 1、判断该链表是否有环(使用快慢指针,如果相遇则证明有环) 2、如果有环,则快慢指针的相遇点必在换内,这一步判断换内节点总数(从该节点遍历,直到回到该节点的长度) 3、使用两个指针,第一个指针先走环内节点 阅读全文
摘要:
题目:输入一个链表,输出该链表中倒数第k个节点。 注: 使用两个指针,一个指针先走k步,然后两个指针同时走,当前一个指针到达链表尾部的时候,后一个指针指向的就是倒数第k个节点。本题要注意输入数据的判读,头节点是否为空,k是否大于0以及k是否小于链表总长度。 阅读全文
摘要:
题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。 注: 使用两个指针,从前、后两个方向开始遍历,当前方的指针遇到奇数时,说明所在位置正确,继续往后遍历,当遇到偶数时,与后面遍历到的奇数进行交换,直到两个指针相遇。 阅读全文
摘要:
题目:给定单向链表的头指针和一个节点指针,在O(1)时间内删除链表节点。 注: 情况1:删除的是头节点,直接返回head.next。(这种情况包含链表只有一个头节点的情况) 情况2:删除的是链表的最后一个节点,需要先遍历链表,获取要删除节点的前驱节点,然后将该节点指针指向None,删除节点 情况3: 阅读全文
摘要:
题目:输入数字n,按顺序打印从1到最大的n位十进制数。(大整数问题) 注: list_plus_1:用列表模拟字符串,该函数用来实现数值加1的操作,最后输出字符串时,只需要将列表拼接输出即可 is_max:用于判断该当前列表表示的数是否为要输出的最大数9999...999,如果达到最大,返回True 阅读全文
摘要:
题目:实现函数Power,求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。 注: 如果n为偶数,则只需要计算b的n/2次方即可,然后平方。如果n为奇数,转为b乘以n的偶数次方,然后利用递归。终止条件为n为0时,返回1. 阅读全文