做本地團購網(wǎng)站免費宣傳平臺
給你一個單鏈表的頭節(jié)點 head ,請你判斷該鏈表是否為回文鏈表。如果是,返回 true ;否則,返回 false 輸入:head = [1,2,2,1] 輸出:true
采用動態(tài)數(shù)組,判斷數(shù)組對稱就可以了(這解法空間復(fù)雜度o(n))
package TOP21_30;import Util.ListNode;import java.util.ArrayList;
import java.util.List;// 回文鏈表
//給你一個單鏈表的頭節(jié)點 head ,請你判斷該鏈表是否為回文鏈表。如果是,返回 true ;否則,返回 false 輸入:head = [1,2,2,1]
//輸出:true
public class Top22 {public static boolean isPalindrome(ListNode head) {List<Integer> list = new ArrayList<>();while (head != null) {list.add(head.val);head = head.next;}int length = list.size();int k = length / 2;for (int i = 0; i <= k; i++) {if (list.get(i) != list.get(length - 1 - i)) {return false;}}return true;}public static void main(String[] args) {int[] nums = {1,2,3,2,1};ListNode node = ListNode.setNodes(0,nums);ListNode.printListData(node);int[] nums2 = {1,0,0};System.out.println(isPalindrome(ListNode.setNodes(0,nums2)));}
}
ListNode 類
package Util;public class ListNode {public int val;public ListNode next;public ListNode() {}public ListNode(int val) {this.val = val;}public ListNode(int val, ListNode next) {this.val = val;this.next = next;}public static ListNode setNodes(int index,int[] nums){ListNode res = new ListNode();res.val = nums[index];if(index == nums.length-1){res.next = null;return res;}else{res.next = setNodes(index+1,nums);}return res;}public static void printListData(ListNode node){while (node!=null){System.out.println(node.val);node = node.next;}}
}
harryptter / LeetcodeTop100 · GitCode