坚持写算法题的第四周(四)

简介: 坚持写算法题的第四周(四)

2021-11-4

题目

1.有效的完全平方数

image.png


2.青蛙跳台阶

image.png


3.斐波那楔数列

image.png


4.旋转数组的最小数字

image.png


5.打印从1到n的最大的n位数

image.png


题解

1.有效的完全平方数

这个最少需要log(n)的复杂度才能过,o(n)就过不了,我把两个代码都发在下面了。


本题有多种解法,我用的时循环求解,找出最后的i。


2.青蛙跳台阶

这个就是第三题的那个解法,如果用递归的话这个题时会超时的,所以我们用记忆法来求解,大家可以直接看代码。


3.斐波那楔数列

同上。


4.旋转数组的最小数字

在升序表中找到突然下降的那个值就是这个表的最小值。


5.打印从1到n的最大的n位数

太简单了,没有题解。


代码

1.有效的完全平方数

//第一个超时
class Solution1:
    def isPerfectSquare(self, num: int) -> bool:
        if num == 1:
            return True
        for i in range(1,num//2+1):
            if i*i == num:
                return True
        return False
class Solution:
    def isPerfectSquare(self, num: int) -> bool:
        x = 1
        square = 1
        while square <= num:
            if square == num:
                return True
            x += 1
            square = x * x
        return False


2.青蛙跳台阶

class Solution:
    def numWays(self, n: int) -> int:
        if n == 0:
            return 1
        dp = {}
        dp[1] = 1
        dp[2] = 2
        for i in range(3,n+1):
            dp[i] = dp[i-1] + dp[i-2]
        return dp[n]%1000000007

3.斐波那楔数列

class Solution:
    def fib(self, n: int) -> int:
        a, b = 0, 1
        for _ in range(n):
            a, b = b, a + b
        return a % 1000000007

4.旋转数组的最小数字

class Solution:
    def minArray(self, numbers: List[int]) -> int:
        low, high = 0, len(numbers) - 1
        while low < high:
            pivot = low + (high - low) // 2
            if numbers[pivot] < numbers[high]:
                high = pivot 
            elif numbers[pivot] > numbers[high]:
                low = pivot + 1
            else:
                high -= 1
        return numbers[low]

5.打印从1到n的最大的n位数

class Solution:
    def printNumbers(self, n: int) -> List[int]:
        res = []
        for i in range(1,10**(n)):
            res.append(i)
        return res
目录
相关文章
|
存储 前端开发 测试技术
DDD - 六边形架构和CQRS架构
DDD - 六边形架构和CQRS架构
998 0
|
Go
使用Go语言发邮件
使用Go语言发邮件
262 2
Echarts实战案例代码(23):富文本实现坐标轴文字和图片排版的解决方案
Echarts实战案例代码(23):富文本实现坐标轴文字和图片排版的解决方案
346 0
|
11月前
|
机器学习/深度学习 调度 计算机视觉
深度学习中的学习率调度:循环学习率、SGDR、1cycle 等方法介绍及实践策略研究
本文探讨了多种学习率调度策略在神经网络训练中的应用,强调了选择合适学习率的重要性。文章介绍了阶梯式衰减、余弦退火、循环学习率等策略,并分析了它们在不同实验设置下的表现。研究表明,循环学习率和SGDR等策略在提高模型性能和加快训练速度方面表现出色,而REX调度则在不同预算条件下表现稳定。这些策略为深度学习实践者提供了实用的指导。
470 2
深度学习中的学习率调度:循环学习率、SGDR、1cycle 等方法介绍及实践策略研究
|
机器学习/深度学习
一文了解回归模型10个重要知识点
一文了解回归模型10个重要知识点
546 7
|
存储 Java 数据库连接
数据库三范式详解及应用
数据库三范式详解及应用
|
Linux
阿里云CentOS数据盘挂载(磁盘扩容)
阿里云CentOS数据盘挂载(磁盘扩容)
711 0
|
缓存 监控 Java
Java的OOM问题及解决方案
Java的OOM问题及解决方案
503 0
|
算法 atlas 网络可视化
Gehpi的网络布局
Gehpi的网络布局