政务服务中心网站建设总结,山东省住房建设部网站首页,户县规划建设和住房保障局网站,英语培训东莞网站建设目录
前言#xff1a;
1.两数相加
2.无重复字符的最长子串 3.整数反转
4.删除链表的倒数第 N 个结点 前言#xff1a; 今天我又来继续分享最近做的题了#xff0c;现在开始进入我们快乐的刷题时间吧#xff01;#xff08;编程语言Python3.0#xff0c;难度#xf…目录
前言
1.两数相加
2.无重复字符的最长子串 3.整数反转
4.删除链表的倒数第 N 个结点 前言 今天我又来继续分享最近做的题了现在开始进入我们快乐的刷题时间吧编程语言Python3.0难度中等
1.两数相加 给你两个 非空 的链表表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的并且每个节点只能存储 一位 数字。 请你将两个数相加并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外这两个数都不会以 0 开头。 示例 代码实现
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val0, nextNone):
# self.val val
# self.next next
class Solution:def addTwoNumbers(self, l1, l2):li1[]li2[]p1l1while p1:li1.append(str(p1.val))p1p1.nextp2l2while p2:li2.append(str(p2.val))p2p2.nextli1li1[::-1]li2li2[::-1]astr(int(.join(li1))int(.join(li2)))[::-1]li3[]for i in a:li3.append(int(i))l3 ListNode(li3[0])curl3for i in range(1,len(li3)):pListNode(li3[i])cur.nextpcurpreturn l3 解题思路这道题我们可以去创建两个列表作为题目所给的两个链表的数据储存容器对此依次去循环两个链表把里面的数据放入到li1和li2当中然后按照题目的要求进行倒序之后就把这两个列表里面的数据整合到一个整数相加再把得到的结果放入到列表li3当中并且倒序下面就是去创建一个链表依次把li3里面的数据存入到链表当中就行了 2.无重复字符的最长子串 给定一个字符串 s 请你找出其中不含有重复字符的 最长子串 的长度。 class Solution:def lengthOfLongestSubstring(self, s)::type s: str:rtype: intst {}i, ans 0, 0for j in range(len(s)):if s[j] in st:i max(st[s[j]], i)ans max(ans, j - i 1)st[s[j]] j 1return ans 解题思路先创建一个字典作为每个字符的位置数从1开始统计然后对这个字符串进行循环把每一个字符作为键然后位置数作为值存入到字典当中当遇到字典中已又的字符时就说明开始重新重复了此时要去重新统计不连续最长字符串的个数此时的i就应该是要和上一个出现的位置和此时的位置进行取最大同时最长不连续字符串是对上一个的ans和此时(j1)-i 统计的长度进行取最大。最后遍历完成了之后返回的ans就是最大的不连续字符串长度。 3.整数反转 给你一个 32 位的有符号整数 x 返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] 就返回 0。 假设环境不允许存储 64 位整数有符号或无符号。 class Solution:def reverse(self, x):if x0:return 0sstr(x)li[]fu[]for i in s:li.append(i)if li[0]-:fu.append(li[0])lili[1:]if li[len(li)-1]0:lili[:len(li)-1]xxint(.join(fuli[::-1]))if xx2**31-1 or xx-(2**31):return 0return xx 解题思路这类题可以去用分类讨论去解决如果输入0那么就返回0把这个数字转换为字符串后放入列表当中然后对这个数字进行判断如果有负号就把负号给提出来放入到列表fu中然后对列表li做切片如果列表li最后一个数字是0的话那么就把0去掉同样做切片处理最后我们只需要把列表fu与li倒序拼接到一起就行了然后判断数字xx是否在要求范围内最后就输出结果。 4.删除链表的倒数第 N 个结点 给你一个链表删除链表的倒数第 n 个结点并且返回链表的头结点。 # Definition for singly-linked list.
# class ListNode:
# def __init__(self, val0, nextNone):
# self.val val
# self.next next
class Solution:def removeNthFromEnd(self, head, n):count0pheadwhile p:count1pp.nextif count0 or count1:headNonereturn headtargetcount1-nif target1:headhead.nextreturn headc1qheadwhile c1target:qq.nextc1q.nextq.next.nextreturn head 解题思路首先我们要去统计这个链表有多少个节点记为count按照题目要求删除掉倒数第n个节点实际上就是删除掉第count1-n个节点下面就要进行分类讨论了如果要删除掉第一个节点的话那就让头结点之间往后面移动一位然后返回就行了如果要删除第二位节点及其以上的话那么就要进行循环找到要被删除的前一个节点让这个节点指向被删除节点的下一个就行了。最后返回头结点。 好了以上就是今天的全部内容了我们下一期再见
分享一张壁纸