27届春招备战一轮复习--第七期
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**cnt
return [i for i in range(1, max)]
题目二(正常难度了):
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
请你将两个数相加,并以相同形式返回一个表示和的链表。
你可以假设除了数字 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.val
else:
l1_tmp=0
if l2:
l2_tmp=l2.val
else:
l2_tmp=0
total=l1_tmp+l2_tmp+jinwei
jinwei=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.next
if l2:
l2=l2.next
return l3.next

浙公网安备 33010602011771号