标签:包含 创建对象 turn 基本 需要 前缀 链表 this 方法返回值
所有类都是引用类型。
类是某一批对象的抽象。
1 [修饰符] class 类名{ 2 零到多个构造器定义 3 零到多个成员变量 4 零到多个方法 5 }
对于一个类定义而言,可以包含三种最常见的成员:构造器、成员变量、方法
1 [修饰符] 类型 成员变量名 [= 默认值];
1 [修饰符] 方法返回值类型 方法名(形参列表){ 2 //方法体 3 }
1 [修饰符] 构造器名(形参列表){ 2 //构造执行体 3 }
Java 的对象有两个作用:
PS:如果方法里有个局部变量和成员变量同名,但程序又需要在该方法里访问这个被覆盖的成员变量,则必须用this前缀。
题目:21. 合并两个有序链表
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
1 /** 2 * Definition for singly-linked list. 3 * public class ListNode { 4 * int val; 5 * ListNode next; 6 * ListNode(int x) { val = x; } 7 * } 8 */ 9 class Solution { 10 public ListNode mergeTwoLists(ListNode l1, ListNode l2) { 11 ListNode list = null; 12 if(l1 ==null && l2 == null){ 13 return list; 14 }else if (l1 == null){ 15 list = new ListNode(l2.val); 16 l2 = l2.next; 17 }else if(l2 == null){ 18 list = new ListNode(l1.val); 19 l1 = l1.next; 20 }else{ 21 if(l1.val > l2.val){ 22 list = new ListNode(l2.val); 23 l2 = l2.next; 24 }else{ 25 list = new ListNode(l1.val); 26 l1 = l1.next; 27 } 28 } 29 ListNode tmp = list; 30 while(l1 != null || l2 != null){ 31 if(l1 == null){ 32 tmp.next = new ListNode(l2.val); 33 tmp = tmp.next; 34 l2 = l2.next; 35 }else if(l2 == null){ 36 tmp.next = new ListNode(l1.val); 37 tmp = tmp.next; 38 l1 = l1.next; 39 }else{ 40 if(l1.val < l2.val){ 41 tmp.next = new ListNode(l1.val); 42 tmp = tmp.next; 43 l1 = l1.next; 44 }else{ 45 tmp.next = new ListNode(l2.val); 46 tmp = tmp.next; 47 l2 = l2.next; 48 } 49 } 50 51 } 52 return list; 53 } 54 }
这是第一次接触链表,第一步设置表头的时候有点笨拙,看到评论中的设置 dummyHead ,最后输出 dummyHead.next 的方法,可以使代码更简洁一点,但实际性能应该差不多,这道题我的答案执行用时 2 ms。另外还有另一种方案是将两个链表的节点重新串起来,这样耗费的内存会更小,速度也更快,缺点是原本的两条链表会被破坏,不能再次使用了。
标签:包含 创建对象 turn 基本 需要 前缀 链表 this 方法返回值
原文地址:https://www.cnblogs.com/carlosouyang/p/10738306.html