Merge Two Sorted Lists & Remove Nth Node From End of List
1.合并两个排好序的list
Merge Two Sorted Lists
Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.
2.删除list倒数第n个元素
Remove Nth Node From End of List
Given a linked list, remove the nth node from the end of list and return its head.
For example,
Given linked list: 1->2->3->4->5, and n = 2. After removing the second node from the end, the linked list becomes 1->2->3->5.
Note:
Given n will always be valid.
Try to do this in one pass.
两个问题合在一个工程里面测试
package com.rust.datastruct; public class MergeTwoSortedLists { public static ListNode mergeTwoSortedLists(ListNode l1, ListNode l2) { ListNode r1 = new ListNode(0); ListNode res = r1; ListNode t1 = l1;//java 中这样的赋值操作,对了l1操作等同于对t1操作 ListNode t2 = l2; while (t1 != null && t2 != null){ if (t1.val <= t2.val) { r1.next = t1; t1 = t1.next; } else { r1.next = t2; t2 = t2.next; } r1 = r1.next; } if (t1 != null) { r1.next = t1; } if (t2 != null) { r1.next = t2; } res = res.next; return res; } /** * @param head * @param n * @return ListNode */ public static ListNode removeNthFromEnd(ListNode head, int n) { if (n == 0) return head; ListNode fakeNode = head; int count = 0; while (fakeNode != null) { fakeNode = fakeNode.next; count++; } fakeNode = head; if (n == count) { head = head.next; return head; } else { for (int i = 0; i < count; i++) { if (i + n + 1== count) { System.out.println(fakeNode.val); ListNode cut = fakeNode.next.next; fakeNode.next = cut; count--; continue; } fakeNode = fakeNode.next; } } return head; } public static void main(String args[]){ ListNode l1 = new ListNode(0); ListNode l2 = new ListNode(1); ListNode p1 = l1; ListNode p2 = l2; /*initial the list*/ for (int i = 2; i <= 10; i++) { if (i%2 == 0) { p1.next = new ListNode(i); p1 = p1.next; } else { p2.next = new ListNode(i); p2 = p2.next; } } p1 = l1; p2 = l2; System.out.println("input List l1 and l2"); showData(l1, l2);//after show,l1 and l2 value didn't change! System.out.println("mergeTwoLists(l1, l2) -->"); ListNode res = mergeTwoSortedLists(l1, l2); /** test mergeTwoSortedLists start ************/ while (res.next != null) {// res is destroyed System.out.print(res.val + "\t"); res = res.next; } System.out.println(res.val); System.out.println("After merge"); /** End ***********************************/ /** test removeNthFromEnd start **************/ showData(l1, l2); // use l2 to test int n = 1; l2 = removeNthFromEnd(l2,n); showData(l1, l2); /** End ***********************************/ } /** * Print the ListNode * @param l1 ListNode * @param l2 ListNode */ public static void showData(ListNode l1, ListNode l2){ System.out.println("l1 -->"); while (l1.next != null) { System.out.print(l1.val + "\t"); l1 = l1.next; } System.out.println(l1.val); System.out.println("l2 -->"); while (l2.next != null) { System.out.print(l2.val + "\t"); l2 = l2.next; } System.out.println(l2.val); System.out.println("/************************************/"); } } //Definition for singly-linked list. class ListNode { int val; ListNode next; ListNode(int x) { val = x; } }
输出:
input List l1 and l2
l1 -->
0 2 4 6 8 10
l2 -->
1 3 5 7 9
/************************************/
mergeTwoLists(l1, l2) -->
0 1 2 3 4 5 6 7 8 9 10
After merge
l1 -->
0 1 2 3 4 5 6 7 8 9 10
l2 -->
1 2 3 4 5 6 7 8 9 10
/************************************/
9
l1 -->
0 1 2 3 4 5 6 7 8 9
l2 -->
1 2 3 4 5 6 7 8 9
/************************************/
Merge Two Sorted Lists & Remove Nth Node From End of List的更多相关文章
- [LeetCode] Merge k Sorted Lists 合并k个有序链表
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 这 ...
- Merge Two Sorted Lists
Merge Two Sorted Lists https://leetcode.com/problems/merge-two-sorted-lists/ Merge two sorted linked ...
- [Leetcode][Python]21: Merge Two Sorted Lists
# -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com' 21: Merge Two Sorted Listshttps://oj.le ...
- [Leetcode][Python]23: Merge k Sorted Lists
# -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com' 23: Merge k Sorted Listshttps://oj.leet ...
- LeetCode之“链表”:Merge Two Sorted Lists && Merge k Sorted Lists
1. Merge Two Sorted Lists 题目链接 题目要求: Merge two sorted linked lists and return it as a new list. The ...
- python 中的堆 (heapq 模块)应用:Merge K Sorted Lists
堆是计算机科学中一类特殊的数据结构的统称.堆通常是一个可以被看做一棵树的数组对象.在队列中,调度程序反复提取队列中第一个作业并运行,因为实际情况中某些时间较短的任务将等待很长时间才能结束,或者某些不短 ...
- 蜗牛慢慢爬 LeetCode 23. Merge k Sorted Lists [Difficulty: Hard]
题目 Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity ...
- LeetCode: Merge k Sorted Lists 解题报告
Merge k Sorted Lists Merge k sorted linked lists and return it as one sorted list. Analyze and descr ...
- [Leetcode] Merge k sorted lists 合并k个已排序的链表
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 思 ...
随机推荐
- JavaSE教程-04Java中循环语句for,while,do···while
** Java的循环语句 ** 引入: 生活中有循环,程序的世界也有循环. 思考:生活中有哪些循环的事情? 总结:什么是循环? 重复做类似的事情,而且有终止条件,如果没有终止条件会是怎样? 类似这样的 ...
- .net、jquery、ajax、wcf实现数据库用户名检测局部刷新
jquery代码 $(function() { $("#user_name").blur(function(){ var user_name=$("#user_name& ...
- 基于angular实现模拟微信小程序swiper组件
这段时间的主业是完成一个家政类小程序,终于是过审核发布了.不得不说微信的这个小程序生态还是颇有想法的,抛开他现有的一些问题不说,其提供的组件系统乍一看还是蛮酷的.比如其提供的一个叫swiper的视图组 ...
- 最全面的Java字节byte操作,处理Java基本数据的转换及进制转换操作工具,流媒体及java底层开发项目常用工具类
前言:用于处理Java基本数据的转换及进制转换操作工具 一.实现功能 1.int与byte互转 2.int与byte[]互转 3.short与byte互转 4.short与byte[]互转 5.16位 ...
- 包装FTPWebRequest类
上篇文章讨论了C#从基于FTPS的FTP server下载数据 (FtpWebRequest 的使用)SSL 加密.不过细心的朋友应该可以发现FTPWebRequest 每次都是新生成一个reques ...
- python+selenium遇到鼠标悬停不成功可以使用js进行操作
问题:在定位这种悬停后出现下拉操作的时候,尝试了使用move_to_element的方法 # ele_logout = br.find_element_by_xpath('/html/body/div ...
- [1] C# IS & AS讲解
c# 中 is和as 操作符是用来进行强制类型转换的 is : 检查一个对象是否兼容于其他指定的类型,并返回一个Bool值,永远不会抛出异常 object o = new object(); if ( ...
- AngularJS高级程序设计读书笔记 -- 指令篇 之 内置指令
1. 内置指令(10-12 章) AngularJS 内置超过 50 个内置指令, 包括 数据绑定,表单验证,模板生成,时间处理 和 HTML 操作. 指令暴露了 AngularJS 的核心功能, 如 ...
- twisted学习之reactor
reactor是twisted框架里面一个很重要的抽象,它为我们实现了循环,所以我们不用再去实现循环了. reactor有如下特点: 1.reactor循环会一致运行下去,可以使用Ctrl+C或者相关 ...
- 学习mysql语法--基础篇(二)
前 言 mysql mysql语法--本篇学习都是通过使用Navicat Premium(数据库管理工具),连接mysql数据. 本篇学习主要有两个部分: [SQL语句的组成] DML ...