双指针法学习:反转字符串与链表的反转
2026/6/21 19:41:07 网站建设 项目流程

如大家所熟悉的,双指针法是一种常用的算法思想,用于解决数组和链表等数据结构的问题。它的基本思想是使用两个指针在数据结构中同时移动,以便有效地查找或比较元素。

1.反转字符串

给定一个字符数组,将其反转。

示例:

输入:["h", "e", "l", "l", "o"]

输出:["o", "l", "l", "e", "h"]

解题思路:

双指针法,定义左指针 left 和右指针 right ,分别指向数组的头和尾。然后交换 left 和 right 指向的元素,直到 left 大于等于 right 。

代码:

public void reverseString(char[] s) { int i=0,j=s.length-1; while(i<j){ char tmp=s[i]; s[i]=s[j]; s[j]=tmp; i++; j--; } }

2.链表的反转

给定一个链表,反转链表后,返回新链表的头节点。

示例:

输入:1->2->3->4->5->NULL

输出:5->4->3->2->1->NULL

解题思路:

双指针法,定义一个指针 cur 指向当前节点,一个指针 pre 指向前一个节点,另一个指针 next 指向当前节点的下一个节点。然后依次将当前节点指向前一个节点,然后依次将 pre、cur、next 向右移动一个节点,直到 cur 指向链表的尾节点。

代码:

public ListNode reverseList(ListNode head) { ListNode prev = null; ListNode curr = head; while (curr != null) { ListNode next = curr.next; curr.next = prev; prev = curr; curr = next; } return prev; }

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询