Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
测试岗位也越来卷了,除了基本的功能测试外,还要有编程基础、脚本经验才脱颖而出。
怎么才能提高我们的编程能力呢,刷LeetCode是最佳的途径之一,话不多数,刷题走起~
一、题目描述:
-
题目内容
-
题目示例
-
题目解析
- 本题给定left~right范围值的自除数
- 自除数时指可以被其包含的每一位整除的数。
- 自除数不允许保护0
- left与right大小关系:1 <= left <= right <= 104
二、思路分析:
我们拿到本题,在之前我们刷过关于交替二进制类似。我们以128来模拟自除数:
接下来,我们就有了思路大致如下:
- 定义一个列表L_mode来存储符合自除数的数
- for 循环去 left 和 right+1之间的范围的数字
- 当每取一个数num时,赋值给一个临时变量进行取余操作得到pre
- 当取余等于0,或者 num 对 pre进行取余不等于0时,则退出num取余操作
- 当符合自除数,则L_mode.append()添加
class Solution(object):
def selfDividingNumbers(self, left, right):
"""
:type left: int
:type right: int
:rtype: List[int]
"""
L_mode = []
for num in range(left,right+1):
res = True
num_tmp = num
while num_tmp :
pre = num_tmp % 10
if pre == 0 or num % pre !=0:
res = False
break
num_tmp = num_tmp / 10
if res:
L_mode.append(num)
return L_mode
三、总结:
本题,仍然考验我们进制取模方法,AC记录如下:
时间复杂度O(nlogn),空间复杂度O(n),使用一个列表来存储满足要求的值
以上是本期内容,欢迎大佬们点赞评论,下期见~~