27届春招备战一轮复习--第七期
未经作者允许,禁止转载
----作者:王贵祥
----作者:王贵祥
今天,我们来写点算法
题目一:(难度极低)
实现一个十进制数字报数程序,请按照数字从小到大的顺序返回一个整数数列,该数列从数字 1 开始,到最大的正整数 cnt 位数字结束。
示例 1:输入:cnt = 2
输出:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99]
问:
class Solution:def countNumbers(self, cnt: int) -> List[int]:
答:
class Solution:def countNumbers(self, cnt: int) -> List[int]:max = 10**cntreturn [i for i in range(1, max)]
题目二(正常难度了):
2. 两数相加 - 力扣(LeetCode)
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
请你将两个数相加,并以相同形式返回一个表示和的链表。
你可以假设除了数字 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: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:
答:
#from typing import Optional
# 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: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:l3=ListNode(0)current=l3 #l3为结果链表的头结点,l3.next为结果链表的第一个节点jinwei=0 #判断进位while l1 or l2 or jinwei:if l1:l1_tmp=l1.valelse:l1_tmp=0if l2:l2_tmp=l2.valelse:l2_tmp=0total=l1_tmp+l2_tmp+jinweijinwei=total//10 #取整后的商为进位current_value=total%10 #取余后的数为当前节点的值
# “%” 运算符:用于取余运算,返回两个数相除的余数。例如,156 % 10 的结果是 6。
# “//” 运算符:用于地板除法,返回两个数相除的结果,向下取整。例如,157 // 10 的结果是 15。current.next=ListNode(current_value) #创建新节点current=current.next #current指向新节点if l1:l1=l1.nextif l2:l2=l2.nextreturn l3.next