[链表]
来源:互联网 发布:网络访问控制技术应用 编辑:程序博客网 时间:2024/06/10 13:56
题目:
给定链表的头节点,判断该链表是否为会问结构
给定链表的头节点,判断该链表是否为会问结构
如果链表的长度为N,时间复杂度达到O(N),额外空间复杂度达到O(1)
方法一:
public class Node{public int value;public Node next;public Node(int data){this.value = data;}}public boolean isPalindromel(Node head){Stack<Node> stack = new Stack<Node>();Node cur = head;while (cur != null){stack.push(cur);cur = cur.next;}while(head != null){if(head.value != stack.pop().value){return false;}head = head.next;}return true;}
方法二:
public boolean isPalindromel2(Node head){if(head == null || head.next == null){return true;}Node right = head.next;Node cur = head;while(cur.next != null && cur.next.next != null){right = right.next;cur = cur.next.next;}Stack<Node> stack = new Stack<node>();while(right != null){stack.push(right);right = right.next;}while(!stack.isEmpty()){if(head.value != stack.pop().value){return false;}}return true;}
方法三:
public boolean isPalindromel3(Node head){if(head == null || head.next == null){return true;}Node n1 = head;Node n2 = head;while(n2.next != null && n2.next.next != null){n1 = n1.next;n2 = n2.next.next;}n2 = n1.next;n1.next = null;Node n3 = null;while(n2 != null){n3 = n2.next;n2.next = n1;n1 = n2;n2 = n3;}n3 = n1;n2 = head;boolean res = true;while(n1 != null && n2 != null){if(n1.value != n2.value){res = false;break;}n1 = n1.next;n2 = n2.next;}n1 = n3.next;n3.next = null;while(n1 != null){n2 = n1.next;n1.next = n3;n3 = n1;n1 = n2;}return res;}
阅读全文
0 0
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- PHP 让Json更懂中文(JSON_UNESCAPED_UNICODE)
- 移动端 富文本编辑器
- 《阿里巴巴Java开发手册》背后的故事与初心
- 承认吧!其实你不懂怎么学习编程
- 一个小小的项目
- [链表]
- 一步步实现nest粒子特效
- [LeetCode] DP之 Student Attendance Record II
- 使用 Annotations 改进代码检查
- python如何将变量名转化为同名字符串?#转自知乎#+不同模式打开文件的完全列表
- Java与MySQL数据类型对应类型
- 微信公众号支付 (四、支付结果通知)
- 如何能成为真正优秀的程序猿,这几点你必须知道!
- python type(object) 与 isinstance(object, base) 区别