zoukankan      html  css  js  c++  java
  • 数据结构与算法 (01)数组

    # 作业1
    """
    1. 利用动态数组解决数据存放问题
    
    编写一段代码,要求输入一个整数N,用动态数组A来存放2~N之间所有5或7的倍数,输出该数组。
    
    示例:
    输入:
    N = 100 
    
    输出:
    5 7 10 14 15 20 21 25 28 30 35 40 42 45 49 50 55 56 60 63 65 70 75 77 80 84 85 90 91 95 98 100
    
    """
    def getnumber(N):
        a = []
        for i in range(1,N+1):
            if i % 5 == 0 or i % 7 == 0:
                a.append(i)
        return a
    N = 100
    print(getnumber(N))
    

    输出:[5, 7, 10, 14, 15, 20, 21, 25, 28, 30, 35, 40, 42, 45, 49, 50, 55, 56, 60, 63, 65, 70, 75, 77, 80, 84, 85, 90, 91, 95, 98, 100]

    # 作业2
    """
    2. 托普利茨矩阵问题
    
    如果一个矩阵的每一方向由左上到右下的对角线上具有相同元素,那么这个矩阵是托普利茨矩阵。
    
    给定一个M x N的矩阵,当且仅当它是托普利茨矩阵时返回True。
    
    示例:
    输入:
    matrix = [
      [1,2,3,4],
      [5,1,2,3],
      [9,5,1,2]
    ]
    
    输出: True
    
    """
    def tupl(matrix):
        for i in range(len(matrix)-1):
            for j in range(len(matrix[0])-1):
                if matrix[i][j] != matrix[i+1][j+1]:
                    return False
        return True
    matrix = [
      [1,2,3,4],
      [5,1,2,3],
      [9,5,1,2]
    ]
    print(tupl(matrix))
    

    True

    # 作业3
    
    def threesum(nums):
        result = [] # 结果
        nums.sort() # 排序
        if len(nums)<3:
            return []
        for i in range(len(nums)):
            if nums[i]>0:
                break  # 排序后第一个结果大于0,不可能有三个数之和为0
            elif i>0 and nums[i] == nums[i-1]:
                  continue
            L = i+1
            r = len(nums)-1
            while L <r:
                if nums[i] + nums[L] + nums[r] == 0:
                    result.append([nums[i],nums[L],nums[r]])
                    L+=1
                    r-=1
                elif nums[i] + nums[L] + nums[r] != 0:
                    L+=1 
                    r-=1
        return result
    
    nums = [-1, 0, 1, 2, -1, -4]
    
    print(threesum(nums))
                    
                  
    

    已完成
    执行用时: 20 ms
    输入
    [-1,0,1,2,-1,-4]
    输出
    [[-1,-1,2],[-1,0,1]]
    预期结果
    [[-1,-1,2],[-1,0,1]]

  • 相关阅读:
    Linux安装配置tomcat
    linux 安装jdk
    让/etc/profile文件修改后立即生效
    group by 和聚合函数
    mysql插入日期 vs oracle插入日期
    Thinkphp学习笔记-删除缓存
    Thinkphp错误-phpMyAdmin 尝试连接到 MySQL 服务器,但服务器拒绝连
    Thinkphp学习笔记-模板赋值
    Thinkphp学习笔记-模板主题
    Windows-设置系统服务不开机启动
  • 原文地址:https://www.cnblogs.com/yangjiez/p/12158944.html
Copyright © 2011-2022 走看看