当前位置: 首页 > news >正文

Leetcode刷题日志5.0

目录

前言:

1.两数相加

2.无重复字符的最长子串

 3.整数反转

4.删除链表的倒数第 N 个结点 


前言:

        今天我又来继续分享最近做的题了,现在开始进入我们快乐的刷题时间吧!(编程语言Python3.0,难度:中等)

1.两数相加

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。

请你将两个数相加,并以相同形式返回一个表示和的链表。

你可以假设除了数字 0 之外,这两个数都不会以 0 开头。

 

示例: 代码实现:

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:def addTwoNumbers(self, l1, l2):li1=[]li2=[]p1=l1while p1:li1.append(str(p1.val))p1=p1.nextp2=l2while p2:li2.append(str(p2.val))p2=p2.nextli1=li1[::-1]li2=li2[::-1]a=str(int(''.join(li1))+int(''.join(li2)))[::-1]li3=[]for i in a:li3.append(int(i))l3 = ListNode(li3[0])cur=l3for i in range(1,len(li3)):p=ListNode(li3[i])cur.next=pcur=preturn l3

 解题思路:这道题我们可以去创建两个列表作为题目所给的两个链表的数据储存容器,对此依次去循环两个链表,把里面的数据放入到li1和li2当中,然后按照题目的要求进行倒序,之后就把这两个列表里面的数据整合到一个整数相加,再把得到的结果放入到列表li3当中并且倒序,下面就是去创建一个链表,依次把li3里面的数据存入到链表当中就行了

2.无重复字符的最长子串

给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 

class Solution:def lengthOfLongestSubstring(self, s):""":type s: str:rtype: int"""st = {}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和此时(j+1)-i 统计的长度进行取最大。最后遍历完成了之后返回的ans就是最大的不连续字符串长度。

 3.整数反转

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。

如果反转后整数超过 32 位的有符号整数的范围 [−231,  231 − 1] ,就返回 0。

假设环境不允许存储 64 位整数(有符号或无符号)。

class Solution:def reverse(self, x):if x==0:return 0s=str(x)li=[]fu=[]for i in s:li.append(i)if li[0]=='-':fu.append(li[0])li=li[1:]if li[len(li)-1]=='0':li=li[:len(li)-1]xx=int(''.join(fu+li[::-1]))if xx>2**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, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:def removeNthFromEnd(self, head, n):count=0p=headwhile p:count+=1p=p.nextif count==0 or count==1:head=Nonereturn headtarget=count+1-nif target==1:head=head.nextreturn headc=1q=headwhile c+1<target:q=q.nextc+=1q.next=q.next.nextreturn head

 解题思路:首先我们要去统计这个链表有多少个节点记为count,按照题目要求删除掉倒数第n个节点,实际上就是删除掉第count+1-n个节点,下面就要进行分类讨论了,如果要删除掉第一个节点的话,那就让头结点之间往后面移动一位,然后返回就行了,如果要删除第二位节点及其以上的话,那么就要进行循环,找到要被删除的前一个节点,让这个节点指向被删除节点的下一个就行了。最后返回头结点。

 好了,以上就是今天的全部内容了,我们下一期再见!

分享一张壁纸:

http://www.lryc.cn/news/68025.html

相关文章:

  • 母亲节:向世界上最伟大的母爱致敬
  • Springboot +Flowable,各种历史信息如何查询(二)
  • DataX下载安装使用
  • PCB多层板 : 磁通对消法有效控制EMC
  • 基于正点原子电机实验的pid调试助手代码解析(速度环控制)
  • 报表设计器Stimulsoft 2023.2提供深色主题和 Monoline 图标包
  • 文本三剑客之——sed编辑器
  • 华为OD机试真题 Java 实现【贪心的商人】【2023Q1 100分】
  • 《数据结构与算法C++版》实验二-链表实验
  • 【2023华为OD笔试必会25题--C语言版】《06 简单的自动曝光》——数组
  • Science Advances:宋艳课题组发现经颅近红外激光刺激可提升人类工作记忆
  • Linux系统crash后定位方法-PCIE举例
  • 瑞吉外卖 - 启用与禁用员工账号功能(8)
  • 【MySQL】索引
  • JavaScript全解析——express
  • 【JavaScript数据结构与算法】字符串类(计算二进制子串)
  • TCP连接不释放,应用产生大量CLOSE_WAIT状态TCP
  • Spring基础核心概念理解(常见面试题:什么是IoC?什么是DI?什么是Spring?)
  • 牛客小白月赛 D.遗迹探险 - DP
  • 前端架构师-week6-require源码解析
  • 作为 IT 行业的过来人,你有什么话想对后辈说的?
  • 表数据编辑(数据库)
  • 考虑多能负荷不确定性的区域综合能源系统鲁棒规划(Python代码实现)
  • RocketMQ整理
  • Springboot +Flowable,会签、或签简单使用(二)
  • 将核心交换机配置为NTP服务器
  • application.properties文件注释
  • MySql查询报错this is incompatible with sql_mode=only_full_group_by
  • VMware Workstation 网络备忘 + 集群规模
  • 被裁现状,给找工作的同学一些建议