力扣刷题链表第2题两数相加精解(1),2024年最新高级前端工程师面试题2024

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Web前端全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024c (备注前端)
img

正文

9 9 9 9 9 9 9

9 9 9 9

8 9 9 9 0 0 0 1对应

分析不难发现 其实这个题就是小学算术题里的

9 9 9 9 9 9 9

+              9 9 9 9

————————

1   0  0 0  9 9  9 8

也就是两个数从右往左 读出来 之后相加得到的结果 再从右往左填进去 新链表

这里我觉得要开辟新链表,不然你不知道两个链表谁就比谁长了,

在原有数据结构上增删改 太麻烦了,情况多且复杂。不如开辟新链表香。

//这里的新链表开辟的很有技巧,因为众所周知,在Java中,内存分为堆内存和栈内存

其中 当 new出现时 一个ne左边的等号 ,就把栈和堆紧密的联系在一起啦~

其中学到目前有new的语句,我总结了一下:

Person person = new Person( );

int [] array = new int [1024];

HashSet set = new HashSet<> ();

String str = new String(“小红日srs”);

而此处 你构造新链表 就要给他一个头结点指向它

关于头结点,我请教前阿里巴巴资深软件开发工程师 高博老师 得到的解释如上。

也就是说本题如果声明新的链表,在堆上开辟内存存这个链表。

ListNode newHead=new ListNode(-10);

ListNode temp=newHead;

这样搞是极其巧妙地,然后返回值返回newHead.next,满满都是细节。

3、循环条件,中间过程,收尾处理工作!

===================

循环条件可以设置为  两个都不为空

while(l1!=null&&l2!=null)

{

int sum=l1.val+l2.val;

ListNode node = new ListNode(sum);

temp.next=node;

temp=temp.next;

l1=l1.next;

l2=l2.next;

}

然后在新链表中再不断地new新节点,新节点的值就是原来两个链表的值的和。

当出了循环之后,一定是三种情况:

1,单链表1走完了,2没走完

2,单链表2走完了,1没走完

3,两个单链表一起走完

3不用管,针对1和2的情况,

1走完了,把链表2剩下的接在新链表上

2走完了,把链表1同理处理!

if(l1==null)

{

temp.next=l2;

}

if(l2==null)

{

temp.next=l1;

}

ListNode cur=newHead;

处理完之后,得到的每个链表内的结点值都是小于等于18的,再对他们进行清算!~

//处理完两个链表的值合并,开始清算新链表

while(cur!=null)

{

if(cur.val>=10)

{

if(cur.next==null)

{

cur.val-=10;

ListNode nb = new ListNode(1);

cur.next=nb;

break;

}

cur.val-=10;

cur.next.val++;

}

cur=cur.next;

}

不如开辟新链表 ,其次 ,这个题的难度降低,就降低在如本题,如果有进位的话,进位肯定是最后一位为1,也就是链表最后补个1,特殊情况考虑一下即可~~

最后老铁们不要忘了返回值呀!``

return newHead.next;

4、总结

====

总结
  • 对于框架原理只能说个大概,真的深入某一部分具体的代码和实现方式就只能写出一个框架,许多细节注意不到。

  • 算法方面还是很薄弱,好在面试官都很和蔼可亲,擅长发现人的美哈哈哈…(最好多刷一刷,不然影响你的工资和成功率???)

  • 在投递简历之前,最好通过各种渠道找到公司内部的人,先提前了解业务,也可以帮助后期优秀 offer 的决策。

  • 要勇于说不,对于某些 offer 待遇不满意、业务不喜欢,应该相信自己,不要因为当下没有更好的 offer 而投降,一份工作短则一年长则 N 年,为了幸福生活要慎重选择!!!

第一次跳槽十分忐忑不安,和没毕业的时候开始找工作是一样的感受,真的要相信自己,有条不紊的进行。如果有我能帮忙的地方欢迎随时找我,比如简历修改、内推、最起码,可以把烦心事说一说,人嘛都会有苦恼的~

祝大家都有美好的未来,拿下满意的 offer。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注前端)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
找我,比如简历修改、内推、最起码,可以把烦心事说一说**,人嘛都会有苦恼的~

祝大家都有美好的未来,拿下满意的 offer。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注前端)
[外链图片转存中…(img-0WjENY8w-1713481506973)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 10
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
力扣第二是一道链表相关的目,要求实现一个函数来将两个非负整数链表相加,并返回一个新的链表表示它们的和。 在解决这个问时,可以设立一个表示进位的变量carried,并建立一个新的链表来存储结果。然后,使用while循环来同时处理两个输入链表,每次取出对应的节点值相加,并将结果加上进位值carried后的值作为一个新节点加入新链表的后面。当遍历完两个链表后,如果最后还有进位,需要再添加一个节点来存储进位的值。最后返回新链表的头节点即可。 下面是使用Java语言编写的实现代码: ```java public class ListNode { int val; ListNode next; ListNode(int x) { val = x; } } class Solution { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { ListNode dummy = new ListNode(0); int sum = 0; ListNode cur = dummy; ListNode p1 = l1, p2 = l2; while (p1 != null || p2 != null) { if (p1 != null) { sum += p1.val; p1 = p1.next; } if (p2 != null) { sum += p2.val; p2 = p2.next; } cur.next = new ListNode(sum % 10); sum /= 10; cur = cur.next; } if (sum == 1) { cur.next = new ListNode(1); } return dummy.next; } } ``` 以上就是力扣两数相加第二的Java实现代码。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【Java版】LeetCode 力扣第 2 两数相加 (Add Two Numbers)](https://blog.csdn.net/monokai/article/details/108132843)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值