微软面试100题-60
来源:互联网 发布:js读取手机本地文件 编辑:程序博客网 时间:2024/05/17 07:54
60.在O(1)时间内删除链表结点(链表、算法)。
题目:给定链表的头指针和一个结点指针,在O(1)时间删除该结点。链表结点的定义如下:
struct ListNode
{
int m_nKey;
ListNode* m_pNext;
};
函数的声明如下:
void DeleteNode(ListNode* pListHead, ListNode* pToBeDeleted);
分析:这是一道广为流传的Google面试题,能有效考察我们的编程基本功,还能考察我们的反应速度,
更重要的是,还能考察我们对时间复杂度的理解。
package com.interview.algorithm;import com.interview.algorithm.PrintLinkReverse.LinkNode;public class DeleteLinkNode {public class LinkNode{int value;LinkNode next;public LinkNode(int value, LinkNode next){this.value = value;this.next = next;}}public void deleteNode(LinkNode head, LinkNode toBeDeleted){if(head == toBeDeleted){head = head.next;System.out.println("Delete successful");}else{if(this.findNode(head, toBeDeleted))System.out.println("Delete successful");}}public boolean findNode(LinkNode curr, LinkNode toBeDeleted){if(curr.next!=null){if(curr.next == toBeDeleted){curr.next = curr.next.next;return true;}else{if(this.findNode(curr.next, toBeDeleted))return true;}}return false;}public static void main(String[] args) {// TODO Auto-generated method stubDeleteLinkNode delete = new DeleteLinkNode();DeleteLinkNode.LinkNode tail = delete.new LinkNode(1, null);DeleteLinkNode.LinkNode node1 = delete.new LinkNode(2, tail);DeleteLinkNode.LinkNode node2 = delete.new LinkNode(3, node1);DeleteLinkNode.LinkNode node3 = delete.new LinkNode(4, node2);DeleteLinkNode.LinkNode head = delete.new LinkNode(5, node3);delete.deleteNode(head, head);}}
0 0
- 微软面试100题-60
- 微软面试100题
- 微软面试100题
- 微软面试100题
- 微软面试100题
- 微软面试100题
- 面试宝典--[微软面试100题]
- [转载]微软面试100题
- 微软面试100题链接
- 微软面试100题整理
- [微软面试100题] memmove
- 微软面试100题总结
- 微软面试100题 - 53
- 微软面试100题-65
- 微软面试100题-64
- 微软面试100题-66
- 微软面试100题-68
- 微软面试100题-69
- linux 统计文件的个数
- C语言贪食蛇
- cmd中获取路径
- 后序遍历序列
- 浏览器读取上传文件的大小 file api
- 微软面试100题-60
- 变量延迟
- 监督学习应用与梯度下降
- 2015 ICPC 沈阳站M题
- Hibernate 单向多对一&单向一对多&单向多对多
- 大数相加原理以及代码(C)
- linux 守护进程
- 1006 Line belt
- JSF页面中使用js函数回调后台bean方法并获取返回值的方法