微软等面试100题系列 - 41
2016-04-12 22:43
441 查看
41.请修改append函数,利用这个函数实现:
两个非降序链表的并集,1->2->3 和 2->3->5 并为 1->2->3->5
另外只能输出结果,不能修改两个链表的数据。
此题,合并链表,要求将俩个非有序排列的链表,有顺序的合并。
41.请修改append函数,利用这个函数实现:
两个非降序链表的并集,1->2->3 和 2->3->5 并为 1->2->3->5
另外只能输出结果,不能修改两个链表的数据。
此题,合并链表,要求将俩个非有序排列的链表,有顺序的合并。
package com.algorithm.interview; public class LinkMerge { public class LinkNode{ int data; LinkNode next; public LinkNode(int data, LinkNode next){ this.data = data; this.next = next; } } public LinkNode append(LinkNode h1, LinkNode h2){ LinkNode loop1 = h1; LinkNode loop2 = h2; LinkNode temp; // LinkNode temp2; LinkNode res = null; LinkNode loop3 = null; if(h1.data < h2.data){ res = new LinkNode(h1.data, null); // res.data = h1.data; // LinkNode next = new LinkNode(h2.data, null); // res.next = next; loop3 = res; loop1 = h1.next; loop2 = h2; } if(h1.data > h2.data){ res = new LinkNode(h2.data, null); // res.data = h2.data; // LinkNode next = new LinkNode(h1.data, null); // res.next = next; loop3 = res; loop1 = h1; loop2 = h2.next; } // if(res == null){ // // } while(loop1 != null || loop2 != null){ if(loop1 != null && loop2 != null){ if(loop1.data > loop2.data){ temp = new LinkNode(loop2.data,null); loop3.next = temp; loop2 = loop2.next; loop3 = temp; // temp1 = loop1.next; // loop1.next = loop2; // temp2 = loop2.next; // loop2.next = temp1; }else if(loop1.data < loop2.data){ temp = new LinkNode(loop1.data,null); loop3.next = temp; loop1 = loop1.next; loop3 = temp; }if(loop1.data == loop2.data){ // if(loop1.next != null){ // temp // } temp = new LinkNode(loop1.data,null); loop3.next = temp; loop1 = loop1.next; loop2 = loop2.next; loop3 = temp; } } if(loop1 == null){ temp = new LinkNode(loop2.data,null); loop3.next = temp; // loop1 = loop1.next; loop2 = loop2.next; loop3 = temp; } if(loop2 == null){ temp = new LinkNode(loop1.data,null); loop3.next = temp; // loop1 = loop1.next; loop1 = loop1.next; loop3 = temp; } } return res; } public void printLink(LinkNode h){ while(h != null){ System.out.print(h.data); h = h.next; } } public static void main(String[] args) { // TODO Auto-generated method stub LinkMerge merge = new LinkMerge(); LinkNode node25 = merge.new LinkNode(5,null); LinkNode node23 = merge.new LinkNode(3,node25); LinkNode h1 = merge.new LinkNode(2,node23); LinkNode node13 = merge.new LinkNode(3,null); LinkNode node12 = merge.new LinkNode(2,node13); LinkNode h2 = merge.new LinkNode(1,node12); LinkNode all = merge.append(h1, h2); merge.printLink(all); } }
相关文章推荐
- 招聘需求系列之三(加个提示目前还是中级的需求,后期会补高级的需求包括笔试面试题的系列)
- 面试问题---笔记
- 面试题78:随机抽奖
- 职场中人自我认定的天涯精华帖(链接地址、读后感、经典语录)看完就更新
- 【面试】小东最少需要拉多少票才能让她获胜(京东实习笔试题)
- java并发:简单面试问题集锦
- 简单东西-面试经历总结
- 剑指offer-面试题41:和为s的两个数字VS和为s的连续正数序列
- 面试题4-替换空格
- 面试题77:二维数组递减路径
- JAVA程序员养成计划之JVM学习笔记(1)-运行时数据区
- 2016年腾讯实习生面试技术面一面二面
- Android:Android面试准备二
- 求最长公共子串
- 百度面试题
- 阅读《程序员修炼之道-从小工到专家》阅读笔记01
- 面试中遇到递归算法
- 面试问题及答案小结
- 遇到的android面试题
- 常见的软件测试面试必备