剑指offer之链表续
2015-06-03 16:10
253 查看
面试题17:合并两个有序链表
这道题用递归,很容易实现,但是一定要注意代码鲁棒性
下面是源码:
通过这道题想到如果是有序数组的话,该如何合并,这里不能用递归,主要是因为数组长度的问题
可以借鉴剑指offer第4题,替换空格。源码就不赋了,之前的博客中有提到过。
面试题15:链表中的倒数第K 个结点
当一个指针无法解决问题的时候,考虑尝试两个或三个指针,同样求链表的中间结点以及判断单向链表是否有环都可以考虑使用两个指针。
这道题可以考虑两个指针,一个在前,另一个在他K-1的位置,但是要注意如果k 为0,头结点为空,或者链表长度小于K,这些情况
下面附上程序的源代码:
面试题16:翻转链表
这道题用到了三个指针,只要保证翻转的时候链表不断就可以.
这道题也是leetcode上top10的题目;
下面附上代码:
这道题用递归,很容易实现,但是一定要注意代码鲁棒性
下面是源码:
public static ListNode MergeList(ListNode head1,ListNode head2){ ListNode newHead = null; if(head1==null){ return head2; } else{ if(head2==null){ return head1; } } if(head1.val<head2.val){ newHead = head1; newHead.next = MergeList(head1.next,head2); } if(head1.val>head2.val){ newHead = head2; newHead.next = MergeList(head1,head2.next); } return newHead; }
通过这道题想到如果是有序数组的话,该如何合并,这里不能用递归,主要是因为数组长度的问题
可以借鉴剑指offer第4题,替换空格。源码就不赋了,之前的博客中有提到过。
面试题15:链表中的倒数第K 个结点
当一个指针无法解决问题的时候,考虑尝试两个或三个指针,同样求链表的中间结点以及判断单向链表是否有环都可以考虑使用两个指针。
这道题可以考虑两个指针,一个在前,另一个在他K-1的位置,但是要注意如果k 为0,头结点为空,或者链表长度小于K,这些情况
下面附上程序的源代码:
public static ListNode findKNode(ListNode head, int k){ if(head==null||k == 0){ return null; } ListNode p1 = head; ListNode p2 = head; for(int i =0;i<k-1;i++){ if(p1.next!=null){ p1 = p1.next; } else{ return null; } } while(p1.next!=null){ p1 = p1.next; p2 = p2.next; } return p2; }
面试题16:翻转链表
这道题用到了三个指针,只要保证翻转的时候链表不断就可以.
这道题也是leetcode上top10的题目;
Reverse Linked List
Reverse a singly linked list.下面附上代码:
public ListNode reverseList(ListNode head) { ListNode n = head; ListNode l = null; ListNode r = null; ListNode newHead = null; while(n!=null){ r = n.next; if(r==null){ newHead = n; } n.next = l; l = n; n = r; } return newHead; }
相关文章推荐
- ZH奶酪:JavaScript中的JSON.stringify() and JSON.parse()
- HTML5 新的 Input 类型
- HTML+CSS学习杂记——布局
- 剑指offer 39 - 二叉树的深度
- HTML学习笔记之二(回到顶部 与 回到底部)
- C#后台找不到前台html标签
- Jquery判断是不是移动设备浏览
- JS实现自适应宽度的Tag切换
- html学习笔记(1)——html基本格式
- Nodejs学习笔记(四)与MySQL交互(felixge/node-mysql)
- 前端一些词汇的缩写
- js格式化时间戳
- JavaScript版本的策略模式
- .net 开源 JavaScript 解析引擎
- vultr vs digitalocean vs linode
- CSS设置水平居中和垂直居中
- local variable 'xxx' referenced before assignment
- JS setTimeout()学习笔记
- Html.RenderPartial、Html.RenderAction联系与区别
- jquery iframe自适应高度