1 public ListNode insert(ListNode head, int value) { 2 // Write your solution here 3 ListNode node = new ListNode(value); 4 if (head == null || head.value >= value) { 5 node.next = head; 6 return node; 7 } 8 ListNode prev = null, curr = head; 9 while (curr != null && curr.value < value) { 10 prev = curr; 11 curr = curr.next; 12 } 13 prev.next = node; 14 node.next = curr; 15 return head; 16 }
代码如上, 本题注意事项如下:
1. 用prev 和 curr 的双指针来实现插入目标值进入对应位置的操作;
2. corner case 有两个, 一个是第四行 “if (head == null || head.value >= value)” 与第九行 “while (curr != null && curr.value < value)”. 这里需要注意的是, 两行中的后边一个判断 必须要至少一个包括 “=” 符号, 否则的话(如果两个判断都没有=), 会出现 prev == null, 第十三行会NPE报错. 注意⚠️