【d46】【Java】【力扣】234.回文链表
思路
判断是否是回文,需要:一个指针指向头,一个指针指向尾,两个指针一边向中间靠拢,一边判断数值是否相同
对于单链表,不方便获得pre,如果将节点放进 数组/list ,数组/list可以直接获得索引,,那么就能方便很(注意!!这是单链表需要访问pre时,常用的解决方法)
做法:
1.链表放进list中
2.设置一个指针指向头,一个指针指向尾
3.遍历size/2遍,两个指针一边判断数值是否相同,一边向中间靠拢,
代码
import java.util.ArrayList;
import java.util.Objects;public class Main {public static void main(String[] args) {}public class ListNode {int val;ListNode next;ListNode() {}ListNode(int val) { this.val = val; }ListNode(int val, ListNode next) { this.val = val; this.next = next; }}class Solution {public boolean isPalindrome(ListNode head) {//先将所有节点放进一个list():有序,有索引,长度可变//数组有索引,长度不可变ArrayList<Integer> list = new ArrayList<>();ListNode cur=head;while (cur != null) {list.add(cur.val);cur = cur.next;}//遍历size/2遍,,一个指针指向头,,一个指针指向尾//判断两个指针指向是否相同int size = list.size();int pre=0;int last=size-1;for (int i = 1; i <=size/2 ; i++) {//判断两个指针指向是否相同if (list.get(pre).equals(list.get(last))) {//如果相同,移动指针,继续判断pre++;last--;}else{return false;}}return true;}}
}
记录
总结
对于单链表,如果需要获得pre,可以节点放进 数组/list ,数组/list可以直接获得索引,,那么就能方便很(注意!!这是单链表需要访问pre时,常用的解决方法)