链表指定值清除、链表的回文结构
来源:互联网 发布:stc系列单片机 编辑:程序博客网 时间:2024/05/17 22:00
链表指定值清除
现在有一个单链表。链表中每个节点保存一个整数,再给定一个值val,把所有等于val的节点删掉。
给定一个单链表的头结点head,同时给定一个值val,请返回清除后的链表的头结点,保证链表中有不等于该值的其它值。请保证其他元素的相对顺序。
# 测试样例:{1,2,3,4,3,2,1},2{1,3,4,3,1}
我的提交
# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass ClearValue: def clear(self, head, val): # write code here if not head: return None while head and head.val == val: head = head.next p = head h = None while p: if p.val == val: h.next = p.next else: h = p p = p.next #h.next = None return head
链表的回文结构
请编写一个函数,检查链表是否为回文。
给定一个链表ListNode* pHead,请返回一个bool,代表链表是否为回文。
#测试样例:{1,2,3,2,1}#返回:true{1,2,3,2,3}#返回:false
我的提交
# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Palindrome: def isPalindrome(self, pHead): # write code here stack = [] p = pHead while p: temp = p stack.append(temp) p = p.next p = pHead for _ in range((len(stack) // 2) + 1): temp = stack.pop() if p.val != temp.val: return False p = p.next return True
参考答案
import java.util.*;/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Palindrome { public boolean isPalindrome(ListNode head) { if (head == null || head.next == null) { return true; } ListNode n1 = head; ListNode n2 = head; while (n2.next != null && n2.next.next != null) { // find mid node n1 = n1.next; // n1 -> mid n2 = n2.next.next; // n2 -> end } n2 = n1.next; // n2 -> right part first node n1.next = null; // mid.next -> null ListNode n3 = null; while (n2 != null) { // right part convert n3 = n2.next; // n3 -> save next node n2.next = n1; // next of right node convert n1 = n2; // n1 move n2 = n3; // n2 move } n3 = n1; // n3 -> save last node n2 = head;// n2 -> left first node boolean res = true; while (n1 != null && n2 != null) { // check palindrome if (n1.val != n2.val) { res = false; break; } n1 = n1.next; // left to mid n2 = n2.next; // right to mid } n1 = n3.next; n3.next = null; while (n1 != null) { // recover list n2 = n1.next; n1.next = n3; n3 = n1; n1 = n2; } return res; }}
阅读全文
0 0
- 链表指定值清除、链表的回文结构
- 链表指定值清除
- 链表的回文结构
- 链表的回文结构
- 链表的回文结构
- 链表的回文结构
- 链表的回文结构
- 链表的回文结构
- 链表的回文结构
- 链表的回文结构
- 链表指定值清除(C++)
- 链表指定值清除练习
- 链表14:链表指定值清除
- 链表的回文结构练习
- 链表15:链表的回文结构
- c++-链表的回文结构
- 链表回文结构判断
- 数据结构之链表:链表指定值清除
- Python 时间
- 使用Hibernate搭建Access数据库步骤(详细)
- 在MDK下使用C++进不去中断
- Threadpool拒绝策略
- 正式工作一个月
- 链表指定值清除、链表的回文结构
- Java 的异常
- 重新索引Model数据库
- 【机器学习实战】第7章 集成方法 ensemble method
- 传智168期--Linux&LAMP编程之Linux2016版额外笔记(2017年8月25日18:50:55)
- Spring框架初体验
- JavaScript继承
- pycharm 常用功能
- 生哥的hu测