有了域名后怎样做网站,wordpress多个边栏,企业多语言网站开源,好看的手机网站模板234.回文链表2
感觉自己还是有点时间#xff0c;然后又学了两种解法。那就一起整理一下。
法一#xff1a;反转链表后比较
题解看我的这一篇就行#xff08;click)
法二#xff1a;数组双指针
思路很简单#xff0c;就是用while循环遍历一下整个链表将对应的值复制到…234.回文链表2
感觉自己还是有点时间然后又学了两种解法。那就一起整理一下。
法一反转链表后比较
题解看我的这一篇就行click)
法二数组双指针
思路很简单就是用while循环遍历一下整个链表将对应的值复制到数组中然后定义两个指针front和back从前往后和从后往前同时开始不等就返回false了。
代码
/*** Definition for singly-linked list.* 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) {//2.数组双指针ListInteger valsnew ArrayListInteger();//将链表的值复制到数组中ListNode currhead;while(curr!null){vals.add(curr.val);currcurr.next;}//使用双指针判断其是否是回文int front0;int backvals.size()-1;while(frontback){if(!vals.get(front).equals(vals.get(back))){return false;}front;back--;}return true;}
}
法三递归
这个就老好玩了我以前觉得老难了因为不理解也有可能是因为我在这个起步阶段还没碰到难点嘿嘿不管不管。
首先他就是让你直接到该链表的最后一个值然后在不满足情况的时候慢慢的往回退。想象一下你拿着个绳子绳子下面又掉了个石头然后凭着自己的意愿将石头抛了下去感觉这个例子不太好直到绳子绷紧就是下不去了嗯接着你又想收了然后慢慢的收一点点扯的这种。但是有条件的。回归到题目本身往下放的条件是curr.next不为空当其为空之后返回其上一个结点。看代码吧
代码
/*** Definition for singly-linked list.* 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 {private ListNode frontPointer;//递归函数private boolean recursivelyCheck(ListNode curr){if(curr!null){if(!recursivelyCheck(curr.next)) return false;if(curr.val!frontPointer.val) return false;frontPointerfrontPointer.next;}return true;}public boolean isPalindrome(ListNode head) {//3、递归frontPointerhead;return recursivelyCheck(head);}
}
祝你生活愉快~
最近生活还行你呢哒哒哒~