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

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

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
相关文章
|
7月前
|
Serverless C语言 C++
【数学建模】利用C语言来实现 太阳赤纬 太阳高度角 太阳方位角 计算和求解分析 树木树冠阴影面积与种植间距的编程计算分析研究
【数学建模】利用C语言来实现 太阳赤纬 太阳高度角 太阳方位角 计算和求解分析 树木树冠阴影面积与种植间距的编程计算分析研究
138 1
|
11月前
|
前端开发 容器
3D旋转选秀盒,收纳刹那间的小美好
浏览器发展至今,在网页上呈现 3D 效果已经非常简单了,只需要我们用上一个 css 属性,就可以让我们的页面元素拥有 3D 效果,今天我们就使用这个特性来做一个 3D 旋转盒子。
64 0
|
前端开发 JavaScript
使用html+css+JavaScript制作抛物线小球
使用html+css+JavaScript制作抛物线小球
88 0
|
并行计算 前端开发 数据可视化
【视觉基础篇】11 # 图案生成:如何生成重复图案、分形图案以及随机效果?
【视觉基础篇】11 # 图案生成:如何生成重复图案、分形图案以及随机效果?
129 0
【视觉基础篇】11 # 图案生成:如何生成重复图案、分形图案以及随机效果?
137.正六边形螺旋图案
137.正六边形螺旋图案
47 0
杭电OJ变形 骨牌铺满方格 2501
杭电OJ变形 骨牌铺满方格 2501
72 0
|
机器学习/深度学习
2038. 如果相邻两个颜色均相同则删除当前颜色 : 脑筋急转弯运用题
2038. 如果相邻两个颜色均相同则删除当前颜色 : 脑筋急转弯运用题
坚持写算法题的第四周(三)
坚持写算法题的第四周(三)
坚持写算法题的第四周(三)
|
SQL 算法 索引
坚持写算法题的第四周(二)
坚持写算法题的第四周(二)
坚持写算法题的第四周(二)