ARTS-Week 1

2020-05-30  本文已影响0人  such_

Algorithm

两数之和

题目:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。

思考:
从数组中拿到一个元素 num ,先用 target 减去 num 得到需要找到的另外一个数,然后遍历寻找剩下的那一个数字。在整个执行过程中会出现主要包含两个环节,第一个对数组的遍历,第二个是从数组中查找到特定的数字。
对于其中性能影响较大的是查找特定的数字。
查找特定的数字有两种方式:
1.每次遍历整个数组
2.使用hasp表

下面的代码时使用hasp表的代码,但是这个代码会有一个bug,出现重复数字的时候,无法准备获取到指定的数组index.

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        hashmap = dict(zip(tuple(nums), range(len(nums))))
        for key, value in enumerate(nums):
            need_num = target - value
            if need_num in hashmap.keys():
                need_num_key = hashmap.get(need_num)
                if need_num_key == key:
                    continue
                return [key, need_num_key]
        return None

Review

使用 Python 创建和修改PDF
这是一篇Python 操作PDF 的教程文章
主要内容:
1.抽取文字
2.抽取页面
3.合并多个PDF
4.修改PDF 的样式
5.加密解密PDF
6.使用 reportlab 创建特定样式的 PDF 文件

Tips

Flask-SQLalchemy relationship
SQLalchemy 创建 relationship 有两种:
一种是有外键关系可以直接创建 relationship
另一种则是在没有外键关系的情况下创建relationship

relationship 关系选项

SQLAlchemy关系选项.png

在没有外键关联时,就需要使用primaryjoin去指定关联关系:

class User(db.Model):
    .....
    base_info = db.relationship('UserBaseInfo',
                                foreign_keys='User.id',
                                primaryjoin='User.id == UserBaseInfo.user_id',
                                lazy='joined',
                                uselist=False
                                )

反向引用时应用一对多的关系

class Contract(db.Model)
    ....
    owner = db.relationship('User',  backref=backref("contact", uselist=True))

Share

Python 权限管理设计

前后端分离中的权限设计

权限管理是web开发中绕不开的话题,
第一篇文章中学会了用装饰器去处理权限判断,简单且明了。
第二篇文章中在前后端分离中去控制用户访问路径。

上一篇 下一篇

猜你喜欢

热点阅读