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

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

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
目录
相关文章
|
Serverless C语言 C++
【数学建模】利用C语言来实现 太阳赤纬 太阳高度角 太阳方位角 计算和求解分析 树木树冠阴影面积与种植间距的编程计算分析研究
【数学建模】利用C语言来实现 太阳赤纬 太阳高度角 太阳方位角 计算和求解分析 树木树冠阴影面积与种植间距的编程计算分析研究
266 1
|
6月前
|
算法 Python
二维矩形件排样算法之最低水平线搜索算法实现
二维矩形件排样算法之最低水平线搜索算法实现
197 0
|
7月前
|
测试技术
【深度优先搜索】【组合数学】【动态规划】1467.两个盒子中球的颜色数相同的概率
【深度优先搜索】【组合数学】【动态规划】1467.两个盒子中球的颜色数相同的概率
|
算法
秒懂算法 | 计算几何:圆
计算几何的基础是点积和叉积,它们定义了向量的大小和方向的关系,是其他计算几何概念和算法的出发点。在点积和叉积的基础上,本篇重点介绍圆覆盖。 计算几何题目的代码大多繁琐冗长,因此掌握模板代码是学习计算几何的关键。本篇精心组织了经典的几何模板
18134 1
秒懂算法 | 计算几何:圆
洛谷P3194 [HNOI2008]水平可见直线(计算几何+单调栈)
洛谷P3194 [HNOI2008]水平可见直线(计算几何+单调栈)
111 0
洛谷P3194 [HNOI2008]水平可见直线(计算几何+单调栈)
138.正方形螺旋拼块图案
138.正方形螺旋拼块图案
81 0
杭电OJ 2501 骨牌铺满方格 递推
杭电OJ 2501 骨牌铺满方格 递推
89 0
|
SQL 算法 索引
坚持写算法题的第四周(二)
坚持写算法题的第四周(二)
124 0
坚持写算法题的第四周(二)
|
算法
坚持写算法题的第四周(五)
坚持写算法题的第四周(五)
114 0
坚持写算法题的第四周(五)
下一篇
DataWorks