82. Remove Duplicates from Sorted List II

跳过重复节点,返回head。

class Solution {
public ListNode deleteDuplicates(ListNode head) {
if(head == null || head.next == null)
return head;
ListNode cur = head.next;
if(cur.val != head.val){
//头节点不是重复节点
head.next = deleteDuplicates(cur);
return head;
}else{
//头节点是重复节点
while(cur != null && cur.val == head.val)
cur = cur.next;
return deleteDuplicates(cur);
}
}
}

2. Add Two Numbers

就是建立一个新链表,然后把输入的两个链表从头往后撸,每两个相加,添加一个新节点到新链表后面。为了避免两个输入链表同时为空,我们建立一个 dummy 结点,将两个结点相加生成的新结点按顺序加到 dummy 结点之后,由于 dummy 结点本身不能变,所以用一个指针 cur 来指向新链表的最后一个结点。好,可以开始让两个链表相加了,这道题好就好在最低位在链表的开头,所以可以在遍历链表的同时按从低到高的顺序直接相加。while 循环的条件两个链表中只要有一个不为空行,由于链表可能为空,所以在取当前结点值的时候,先判断一下,若为空则取0,否则取结点值。然后把两个结点值相加,同时还要加上进位 carry。然后更新 carry,直接 sum/10 即可,然后以 sum%10 为值建立一个新结点,连到 cur 后面,然后 cur 移动到下一个结点。之后再更新两个结点,若存在,则指向下一个位置。while 循环退出之后,最高位的进位问题要最后特殊处理一下,若 carry 为1,则再建一个值为1的结点,代码如下:

class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode dummy = new ListNode(-1);
ListNode cur = dummy;
int carry = 0;
while(l1 != null || l2 != null){
int d1 = l1 == null ? 0 : l1.val;
int d2 = l2 == null ? 0 : l2.val;
int sum = d1 + d2 + carry;
carry = sum >= 10 ? 1 : 0;
cur.next = new ListNode(sum % 10);
cur = cur.next;
if(l1 != null) l1 = l1.next;
if(l2 != null) l2 = l2.next;
}
if(carry == 1) cur.next = new ListNode(1);
return dummy.next; }
}

最新文章

  1. C标准库-数值字符串转换与内存分配函数
  2. 【bzoj3124】 Sdoi2013—直径
  3. Win10 Migrate apps to the Universal Windows Platform (UWP)
  4. JS限制input输入的为数字并且有小数的时候最多保留两位小数
  5. mybatis 插入数据时返回主键
  6. Uva 839 Not so Mobile
  7. stdout( 标准输出流)和 stderr( 标准输入流) 重定向问题
  8. avalon2学习教程13组件使用
  9. php排序 sort、rsort、asort、arsort、ksort、krsort
  10. 准确率(Precision)、召回率(Recall)以及F值(F-Measure)
  11. Nhibernate 多对多级联删除
  12. bzoj4546-codechef XRQRS(可持久化Trie)
  13. 【开源.NET】轻量级内容管理框架Grissom.CMS(第三篇解析配置文件和数据以转换成 sql)
  14. head first python菜鸟学习笔记(第三章)
  15. rabbitmq简单收发服务搭建
  16. C语言如何在两个文件中访问同一个全局变量
  17. MAMP环境下为Mac OSX安装设置PHP开发环境
  18. 史上最全PMP备考考点全攻略(上篇-五大过程组,附赠资料)
  19. react 的基础
  20. Android Binder学习的网站

热门文章

  1. 安卓模拟器可访问电脑ip配置
  2. Flutter基础系列之混合开发(二)
  3. vs2017 升级后无法启动 z
  4. Docker系列之学习笔记
  5. decodeURIComponent 解码函数
  6. redis命令之 ----List(列表)
  7. sql语句规范参考
  8. 解决MybatisPlus修改时空字段不修改问题
  9. Entity Framework 6 中如何获取 EntityTypeConfiguration 的 Edm 信息?(一)
  10. Windows Server 2008 R2 install Visual Studio 2015 failed