剑指offer——在O(1)时间删除链表结点
来源:互联网 发布:亨利保尔森 知乎 编辑:程序博客网 时间:2024/06/05 20:43
题目:给定单向链表的头指针和一个指针,定义一个函数在O(1)时间删除该结点
class Node{//创建链表类 String value; Node next;public Node(String value) {// TODO Auteo-generated constructor stubthis.value = value;}public String getValue() {return value;}public void setValue(String value) {this.value = value;}public Node getNext() {return next;}public void setNext(Node next) {this.next = next;}}
通过图示展示过程:
下面请看具体代码实现:
public class Delete { public static void DeleteNode(Node Head,Node ToBeDelete){if(Head==null||ToBeDelete==null)return;//要删除的节点不是尾结点if(ToBeDelete.next!=null){//要删除的是ToBeDelete结点Node node=ToBeDelete.next;ToBeDelete.value=node.value;ToBeDelete.next=node.next;node=null;}//如果链表只有一个结点,删除头结点else if(Head==ToBeDelete){Head=null;ToBeDelete=null;}//如果要删除的是尾结点else{while(Head.next!=ToBeDelete){Head=Head.next;}Head=null;}}public static void main(String[] args) { Node head=new Node("a"); Node node1=new Node("b"); Node node2=new Node("c"); Node node3=new Node("d"); //初始化链表 head.setNext(node1); node1.setNext(node2); node2.setNext(node3); System.out.println("打印链表反转后:"); DeleteNode(head,node2); while(head!=null){ System.out.println(head.value); head=head.next; }}}提示:如果面试题关于n位整数并且没有限定n的取值范围,或者是输入了任意大小的整数,那么这个题目很有可能是需要考虑大数问题的,最好使用字符串,值得注意的是,我们的代码仍然是不完整的,我们需要O(n)的时间才能判断链表中是否包含某一节点,但是受到O(1)的限制,我们不得不把确保结点在链表中的责任推给了函数DeleteNode的调用者。
阅读全文
0 0
- 【剑指 offer】(十三)—— 在 O(1) 时间删除链表结点
- 剑指Offer:面试题13——在O(1)时间删除链表结点
- 剑指offer——面试题13:在O(1)时间删除链表结点
- 剑指offer——在O(1)时间删除链表结点
- 剑指offer—在O(1)时间删除链表结点(18-1)
- 剑指Offer笔记—— 数值的整数次方 在O(1)时间删除链表结点
- 《剑指offer》:[2]O(1)时间删除链表结点
- 【剑指offer】O(1)时间删除链表结点
- 剑指offer(4)-O(1)时间删除链表结点
- 剑指offer--o(1)时间删除链表结点
- 【剑指offer】链表相关-在o(1)时间删除链表结点13
- [剑指offer][面试题13]在O(1)时间删除链表结点
- 剑指offer(33)-在O(1)时间删除链表结点[数据结构]
- 剑指offer-13:在O(1)时间删除链表结点
- 剑指offer 3.3 代码的完整性3- 在O(1)时间删除链表结点
- 《剑指Offer》面试题13:在O(1)时间删除链表结点
- 剑指Offer之 - 在O(1)时间删除链表结点
- 【剑指Offer学习】【面试题13 :在O(1)时间删除链表结点】
- JavaIO 总结笔记<六> 另类IO观点概括
- Kotlin入门(3)基本变量类型的用法
- 35岁月薪2400,你靠什么安身立命?
- 利用Splunk做应用程序的性能分析
- 初学QT,linux的一些头文件作用
- 剑指offer——在O(1)时间删除链表结点
- strucs2拦截器有什么作用
- 【穷举+并查集】BZOJ1050(HAOI2006)[旅行comf]题解
- Makefile经典教程(掌握这些足够)
- java向手机号发送短信验证码
- Spring JdbcTemplate详解
- 8种CSS实现垂直居中水平居中的绝对定位居中技术
- Canonical Juju 使用笔记
- 如果未定义则为0否则为自定义数据(前台)