创意+wordpress主题,优化网站定制,网站开发招标书,做资源的教育类网站或公司2. 两数相加
题目#xff1a;给你两个非空的链表#xff0c;表示两个非负的整数。它们每位数字都是按照逆序的方式存储的#xff0c;并且每个节点只能存储一位数字。 请你将两个数相加#xff0c;并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外#xff0…2. 两数相加
题目给你两个非空的链表表示两个非负的整数。它们每位数字都是按照逆序的方式存储的并且每个节点只能存储一位数字。 请你将两个数相加并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外这两个数都不会以 0 开头。
题目链接2. 两数相加 代码如下 逆位相加并进位 每次相加时计算当前节点的值和记录是否进1既可
class Solution {public ListNode addTwoNumbers(ListNode l1, ListNode l2) {int num0;//每一次向前进的数字ListNode l1nodel1;ListNode l2nodel2;ListNode resultnew ListNode(-1,null);ListNode headnoderesult;ListNode resultnoderesult;int val0;while(l1node!nulll2node!null){vall1node.vall2node.valnum;if(val10){valval-10;num1;}else{valval;num0;}resultnode.nextnew ListNode(val,null);resultnoderesultnode.next;l1nodel1node.next;l2nodel2node.next;}while(l1node!null){vall1node.valnum;if(val10){valval-10;num1;}else{valval;num0;}resultnode.nextnew ListNode(val,null);resultnoderesultnode.next;l1nodel1node.next;}while(l2node!null){vall2node.valnum;if(val10){valval-10;num1;}else{valval;num0;}resultnode.nextnew ListNode(val,null);resultnoderesultnode.next;l2nodel2node.next;}if(num1){resultnode.nextnew ListNode(1,null);resultnoderesultnode.next;}return headnode.next;}
}160. 相交链表
题目给你两个单链表的头节点 headA 和 headB 请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点返回 null 。
图示两个链表在节点 c1 开始相交
题目数据 保证 整个链式结构中不存在环。
注意函数返回结果后链表必须 保持其原始结构 。
自定义评测
评测系统 的输入如下你设计的程序 不适用 此输入
intersectVal - 相交的起始节点的值。如果不存在相交节点这一值为 0 listA - 第一个链表 listB - 第二个链表 skipA - 在 listA 中从头节点开始跳到交叉节点的节点数 skipB - 在 listB 中从头节点开始跳到交叉节点的节点数 评测系统将根据这些输入创建链式数据结构并将两个头节点 headA 和 headB 传递给你的程序。如果程序能够正确返回相交节点那么你的解决方案将被 视作正确答案 。 题目链接160. 相交链表 代码如下
public class Solution {public ListNode getIntersectionNode(ListNode headA, ListNode headB) {int lenA0;int lenB0;int cha0;ListNode AnodeheadA;ListNode BnodeheadB;while(Anode!null){lenA;AnodeAnode.next;}while(Bnode!null){lenB;BnodeBnode.next;}AnodeheadA;BnodeheadB;if(lenAlenB){chalenA-lenB;while(cha0){AnodeAnode.next;cha--;}}else if(lenAlenB){chalenB-lenA;while(cha0){BnodeBnode.next;cha--;}}while(Anode!nullBnode!null){if(AnodeBnode){return Anode;}AnodeAnode.next;BnodeBnode.next;}return null;}
}234. 回文链表重点
题目给你一个单链表的头节点 head 请你判断该链表是否为回文链表。如果是返回 true 否则返回 false 。 题目链接234. 回文链表 用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题 思路一将前一部分入栈 后比较两部分链表 思路二快慢指针找到链表的中点 并将前半部分翻转 逐个比较
class Solution {public boolean isPalindrome(ListNode head) {ListNode slowhead;ListNode fasthead;ListNode prenull;ListNode nextNodenull;//快慢指针找中点 找的同时翻转链表while(fast!nullfast.next!null){fastfast.next.next;nextNodeslow.next;slow.nextpre;preslow;slownextNode;}//判断奇数偶数//fast是否为空 为空是偶数 否则是奇数if(fast!null){slowslow.next;}while(pre!nullslow!null){if(pre.val!slow.val){return false;}prepre.next;slowslow.next;}return true;}
}