leetcode234 回文链表 两种做法(stack(空间非O(1)),空间O(1))
link: leetcode234 回文链表
方法1, 快慢指针,把前半部分存入栈中和后半部分比较
public boolean isPalindrome(ListNode head) {
if(head == null || head.next == null) return true;
Stack<Integer> stack = new Stack<>();
ListNode slow = head;
ListNode fast = head;
while(true){
stack.push(slow.val);
slow = slow.next;
if(fast.next == null){//odd
stack.pop();
break;
}
if(fast.next.next == null){ //even
break;
}
fast = fast.next.next;
}
boolean flag = true;
while (!stack.empty() && slow != null){
int temp = stack.pop();
if(slow.val == temp){
slow = slow.next;
}else {
flag = false;
break;
}
}
if(!stack.empty() || slow != null)
flag = false;
return flag;
}
方法2, 快慢指针,把前半部分反转与后半部分比较
public boolean isPalindrome2(ListNode head) { // O(1)
if(head == null || head.next == null) return true;
if(head.next.next == null){
if(head.next.val == head.val){
return true;
}else{
return false;
}
}
ListNode slow = head;
ListNode fast = head;
int cnt= 0;
while(true){
slow = slow.next;
cnt ++;
if(fast.next == null){//odd
cnt --;
break;
}
if(fast.next.next == null){ //even
break;
}
fast = fast.next.next;
}
// System.out.println("after while, slow.val =" +slow.val);
ListNode fan = head;
ListNode temp = head;
ListNode newHead = head;
int n = 0;
// System.out.println("cnt= " + cnt);
while (n < cnt - 1){
temp = fan.next;
fan.next = fan.next.next;
temp.next = newHead;
newHead = temp;
// System.out.println("temp =" +temp.val);
n++;
}
fan.next = null;
boolean f = true;
while(true){
// System.out.println(slow.val + " | " + newHead.val);
if(slow.val == newHead.val){
slow = slow.next;
newHead = newHead.next;
}else {
f = false;
break;
}
if(slow == null && newHead != null){
f = false;
break;
}else if(slow != null && newHead == null){
f = false;
break;
}else if(slow == null && newHead == null){
break;
}
}
return f;
}
leetcode234 回文链表 两种做法(stack(空间非O(1)),空间O(1))的更多相关文章
- [Swift]LeetCode234. 回文链表 | Palindrome Linked List
Given a singly linked list, determine if it is a palindrome. Example 1: Input: 1->2 Output: false ...
- LeetCode234 回文链表
请判断一个链表是否为回文链表. 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true 进阶:你能否用 O(n) 时间复杂 ...
- Longest Palindromic Substring (最长回文字符串)——两种方法还没看,仍需认真看看
Given a string S, find the longest palindromic substring in S. You may assume that the maximum lengt ...
- leetcode206 反转链表 两种做法(循环,递归)
反转链表 leetcode206 方法1 循环 public ListNode reverseList(ListNode head) { if (head == null || head.next = ...
- [LeetCode] Palindrome Linked List 回文链表
Given a singly linked list, determine if it is a palindrome. Follow up: Could you do it in O(n) time ...
- 如何判断一个单向链表是否为回文链表(Palindrome Linked List)
题目:给定一个单向链表,判断它是不是回文链表(即从前往后读和从后往前读是一样的).原题见下图,还要求了O(n)的时间复杂度O(1)的空间复杂度. 我的思考: 1,一看到这个题目,大脑马上想到的解决方案 ...
- [LeetCode] 234. Palindrome Linked List 回文链表
Given a singly linked list, determine if it is a palindrome. Example 1: Input: 1->2 Output: false ...
- lintcode 中等题:Palindrome Linked List 回文链表
题目 回文链表 设计一种方式检查一个链表是否为回文链表. 样例 1->2->1 就是一个回文链表. 挑战 O(n)的时间和O(1)的额外空间. 解题 法一: 再定义一个链表,存放链表反转的 ...
- 回文链表 · Palindrome Linked List
[抄题]: 设计一种方式检查一个链表是否为回文链表.1->2->1 就是一个回文链表. [暴力解法]: 时间分析: 空间分析: [思维问题]: 以为要从从后往前扫描,不知道调用revers ...
随机推荐
- 字符串的 Base64 加密和解密
base64加密: FORM encode_base64 USING p_business “字符串string CHANGING p_base64. DATA l_xstring TYPE xstr ...
- java线程间的通讯
主要通过wait()和notify()方法进行线程间的通讯 class Product extends Thread{ String name; float price; boolean flag = ...
- sql server查询在线用户
select request_session_id spid, object_name(resource_associated_entity_id) tableName from sys.dm_tra ...
- Jam's balance HDU - 5616 (01背包基础题)
Jim has a balance and N weights. (1≤N≤20) The balance can only tell whether things on different side ...
- dedecms织梦无法保存栏目内容的解决方法
最近使用DedeCms5.3和DedeCms5.5遇到了一个不可思议的问题:在添加栏目时IE内核的浏览器无法保存栏目内容.到网上搜索了半天没找到解决方法,查看DedeCms官方搜索到的结果是“栏目内容 ...
- hdu 3549 网络流最大流 Ford-Fulkerson
Ford-Fulkerson方法依赖于三种重要思想,这三个思想就是:残留网络,增广路径和割. Ford-Fulkerson方法是一种迭代的方法.开始时,对所有的u,v∈V有f(u,v)=0,即初始状态 ...
- 【学习】026 Zookeeper
什么Zookeeper Zookeeper是一个分布式开源框架,提供了协调分布式应用的基本服务,它向外部应用暴露一组通用服务——分布式同步(Distributed Synchronization).命 ...
- 【转载】网易极客战记官方攻略-地牢-Kithgard 橱柜 A
关卡连接: https://codecombat.163.com/play/level/cupboards-of-kithgard-a 谁知道什么样的恐怖事情潜伏在 Kithgard 的橱柜里? 简介 ...
- HDU-2444-The Accomodation of Students(二分图判定,最大匹配)
链接: https://vjudge.net/problem/HDU-2444#author=634579757 题意: There are a group of students. Some of ...
- spring cloud-1