Palindrome Linked List
2015-07-12 14:38
351 查看
1 题目描述
Given a singly linked list, determine if it is a palindrome.题目出处:https://leetcode.com/problems/palindrome-linked-list/
2 解题思路
题目类型为:单链表和双指针题目,这类题目主要是使用两个指针来确定一些关系。题目中还使用了栈进行辅助,用来进行下一趟比较。3 源代码
package com.larry.easy; import java.util.List; import java.util.Stack; import com.larry.util.ListNode; public class PalindromeLinkedList { public boolean isPalindrome(ListNode head) { if(head == null) return true; else if(head.next == null) return true; else{//两个及以上元素 Stack<ListNode> stack = new Stack<ListNode>(); ListNode first = head; ListNode second = head; outer: while(true){ for(int i = 0; i < 2; i++){//second走两步,first走一步 if(second == null) break outer; else{ if(i == 0){//second走第一步 if(second.next != null){ second = second.next; stack.add(first); //odd = false; }else break outer; }else{//second走第二步 if(second.next != null){ second = second.next; first = first.next; //odd = true; }else break outer; } } } } while(!stack.isEmpty()){ first = first.next; ListNode stackCur = stack.pop(); if(first.val != stackCur.val) return false; } } return true; } public static void main(String[] args) { ListNode node1 = new ListNode(1); ListNode node2 = new ListNode(2); ListNode node3 = new ListNode(2); ListNode node4 = new ListNode(1); node1.next = node2; node2.next = node3; node3.next = node4; ListNode node = node1; PalindromeLinkedList pll = new PalindromeLinkedList(); System.out.println(pll.isPalindrome(node)); } }
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统