Leetcode面试经典150题-2.两数相加

2024-09-07 17:44

本文主要是介绍Leetcode面试经典150题-2.两数相加,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

解法都在代码里,不懂就留言或者私信

理论上提交这个就是最优解

字节考过不下20次,这个高居字节面试榜第9名

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {/**本题从头到尾相加,还算比较简单,就每一位相加,算出进位值然后给下一位每一位都这么加,直到某个位不再有数停止遍历,如果有某个还不为空,就继续遍历这一个链表最后如果有进位,单独出一位(如果有就是1,这是常识) */public ListNode addTwoNumbers(ListNode l1, ListNode l2) {/**和一个空的数相加相当于加了0,返回自己即可 */if(l1 == null || l2 == null) {return l1 == null? l2 : l1;}/**carry表示进位,整个计算过程中我们就用这一个进位变量*/int carry = 0;/**head是整个结果链表的头节点 */ListNode head = null;ListNode lastConnect = null;while(l1 != null && l2 != null) {/**毛和(进位之前的) */int grossSum = l1.val + l2.val + carry;/**当前位进位之后的值*/int curNum = grossSum % 10;/**进位 */carry = grossSum / 10;ListNode cur = new ListNode(curNum);/**如果这是结果的第一个节点,把它设置为头和最后一个被连上的节点 */if(head == null) {head = cur;lastConnect = cur;} else {lastConnect.next = cur;lastConnect = cur;}/**当前处理完毕,都跳下一个 */l1 = l1.next;l2 = l2.next;}while(l1 != null) {/**如果链表1还没有用完,那就继续计算它和进位 */int grossSum = l1.val + carry;int curNum = grossSum % 10;carry = grossSum / 10;ListNode cur = new ListNode(curNum);/**这个时候不会出现结果链表还没初始化的情况,不用判断head是不是为null*/lastConnect.next = cur;lastConnect = cur;l1 = l1.next;}while(l2 != null) {/**如果链表1还没有用完,那就继续计算它和进位 */int grossSum = l2.val + carry;int curNum = grossSum % 10;carry = grossSum / 10;ListNode cur = new ListNode(curNum);/**这个时候不会出现结果链表还没初始化的情况,不用判断head是不是为null*/lastConnect.next = cur;lastConnect = cur;l2 = l2.next;}/**如果最后还有进位,那就进位作为最后一个节点 */if(carry != 0) {ListNode carryNode = new ListNode(carry);lastConnect.next = carryNode;}return head;}
}

这篇关于Leetcode面试经典150题-2.两数相加的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1145726

相关文章

哈希leetcode-1

目录 1前言 2.例题  2.1两数之和 2.2判断是否互为字符重排 2.3存在重复元素1 2.4存在重复元素2 2.5字母异位词分组 1前言 哈希表主要是适合于快速查找某个元素(O(1)) 当我们要频繁的查找某个元素,第一哈希表O(1),第二,二分O(log n) 一般可以分为语言自带的容器哈希和用数组模拟的简易哈希。 最简单的比如数组模拟字符存储,只要开26个c

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

秋招最新大模型算法面试,熬夜都要肝完它

💥大家在面试大模型LLM这个板块的时候,不知道面试完会不会复盘、总结,做笔记的习惯,这份大模型算法岗面试八股笔记也帮助不少人拿到过offer ✨对于面试大模型算法工程师会有一定的帮助,都附有完整答案,熬夜也要看完,祝大家一臂之力 这份《大模型算法工程师面试题》已经上传CSDN,还有完整版的大模型 AI 学习资料,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

leetcode-24Swap Nodes in Pairs

带头结点。 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) { val = x; }* }*/public class Solution {public ListNode swapPairs(L

leetcode-23Merge k Sorted Lists

带头结点。 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) { val = x; }* }*/public class Solution {public ListNode mergeKLists

C++ | Leetcode C++题解之第393题UTF-8编码验证

题目: 题解: class Solution {public:static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num &

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟)

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟) 题目描述 给定一个链表,链表中的每个节点代表一个整数。链表中的整数由 0 分隔开,表示不同的区间。链表的开始和结束节点的值都为 0。任务是将每两个相邻的 0 之间的所有节点合并成一个节点,新节点的值为原区间内所有节点值的和。合并后,需要移除所有的 0,并返回修改后的链表头节点。 思路分析 初始化:创建一个虚拟头节点

C语言 | Leetcode C语言题解之第393题UTF-8编码验证

题目: 题解: static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num & MASK1) == 0) {return

【JavaScript】LeetCode:16-20

文章目录 16 无重复字符的最长字串17 找到字符串中所有字母异位词18 和为K的子数组19 滑动窗口最大值20 最小覆盖字串 16 无重复字符的最长字串 滑动窗口 + 哈希表这里用哈希集合Set()实现。左指针i,右指针j,从头遍历数组,若j指针指向的元素不在set中,则加入该元素,否则更新结果res,删除集合中i指针指向的元素,进入下一轮循环。 /*** @param

java面试常见问题之Hibernate总结

1  Hibernate的检索方式 Ø  导航对象图检索(根据已经加载的对象,导航到其他对象。) Ø  OID检索(按照对象的OID来检索对象。) Ø  HQL检索(使用面向对象的HQL查询语言。) Ø  QBC检索(使用QBC(Qurey By Criteria)API来检索对象。 QBC/QBE离线/在线) Ø  本地SQL检索(使用本地数据库的SQL查询语句。) 包括Hibern