美文网首页
ARTS 第7周

ARTS 第7周

作者: 陈卧虫 | 来源:发表于2019-05-19 17:28 被阅读0次

    ARTS 第7周分享

    [TOC]

    Algorithm

    922. Sort Array By Parity II

    难度:[easy]

    [思路]

    1. 遍历整个数组用连个容器,分别存储位置不对的奇数和偶数
    2. 分别从两个容器中取出一个数据,进行位置互换

    [参考代码]

    func sortArrayByParityII(A []int) []int {
        odds := make([]int, 0)
        evens := make([]int, 0)
    
        // 遍历整个数组用连个容器,分别存储位置不对的奇数和偶数
        for i, v := range A {
            if i%2 == 0 && v%2 != 0 {
                evens = append(evens, i)
            } else if i%2 != 0 && v%2 == 0 {
                odds = append(odds, i)
            }
    
            // 分别从两个容器中取出一个数据,进行位置互换
            if len(odds) > 0 && len(evens) > 0 {
                A[evens[0]], A[odds[0]] = A[odds[0]], A[evens[0]]
                evens = evens[1:]
                odds = odds[1:]
            }
        }
        return A
    }
    

    Review

    <https://golangbot.com/write-files/>

    如何用golang写数据到文件

    • 写字符串到文件
    • 写字节到文件
    • 逐行写入文件
    • 向文件追加内容
    • 并发的写数据到文件

    Tips

    分享一:

    这周读的一遍文章,关于如何刷LeetCode:https://mp.weixin.qq.com/s/fECqsr3T4WKNcx7s-2ozuA

    个人总结:

    刷题不能蛮干,要循序渐进

    • 题目难度循序渐进:从简单的题开始,即使有经验,也应该如此
    • 按算法分类来刷题:一个时间段,持续地刷同一个类型的题
      • 分类:
        • 考察数据结构:链表、栈、队列、哈希表、图、Trie、二叉树
        • 考察基础算法:深度优先、广度优先、二分查找、递归
        • 考察算法思想:递归、分治、回溯搜索、贪心、动态规划
      • 优点:会促使你对这个数据结构,算法有更深,更全面的理解

    刷题的两种方式,龟系,兔系

    • 龟系:每一个题目都要追求最有的解法,所以不满足于一种解法,各种解法都写一写,所以每一道题都会需要大量时间
    • 兔系:使用固定的套路来刷题,先根据标签来分类,按照解该类型题的套路来刷题
      • 每个标签内部也分为Easy、Medium、Hard,按照先易后难的顺序刷题,先熟悉套路,再循序渐进

    解题三部曲:

    1. 看懂题目
      • 理解清楚题目究竟要解决什么问题
      • 有些题目很好理解,有些题目很隐晦
      • 5分钟内看不懂,mark下来,以后做
    2. 分析,推导解法
      • 不要去想任何实现相关的事情,不去想代码如何写
      • 目的:减少心智负担
    3. 将思路转换成代码
      • 将一个思路转换成代码的难度不一定,有时候会很难

    算法的封装思想

    • 封装的目的是为了重复利用

    • 不仅要考虑代码层的封装,思维层的封装也很重要

    • 有些已经实现过的基本算法自己就没必要再去实现一遍(元算法),可以直接调用内置函数库的(比如排序算法)

    • 对于元算法:一定要刻意练习(理解 + 实现)

      • 先看算法书上的描述,确保自己理解到位
      • 自己尝试实现一遍
    • 保持持续地动力

      • 特别关注刷题的正反馈
      • 老是无法解决的难题:降低难度,或更全面的复习该算法和数据结构
      • 千万不要死磕,要智取,如果实在解决不了,就放弃它

    分享二:

    git移除文件/取消对文件的追踪

    移除文件

    git rm 文件

    取消对文件的追踪

    git rm --cached 文件

    .gitignore书写套路

    第一行应该是:.gitignore

    这样写的好处是,可以直接忽略掉这个文件自身,git status时就不会出现这个文件,你就可以大胆的用git add ., 相当实用

    Share

    这种工作上使用ER图,所以复习了一下ER图基础概念:

    ER图最主要的是是三部分:实体(entity),属性(attribute),关系(relationship)

    实体:长方形表示, 一种特定的数据模型,每个实体都有自己的成员,比如学生实体就拥有张三,李四等实体成员。

    属性:椭圆形表示, 这种数据模型具有的属性,例如学生模型就具有姓名, 学号, 年级等属性。

    属性分为唯一属性和非唯一属性:

    • 唯一属性:可以用来唯一表示一个实体中的成员,每个成员各不相同,比如学生实体的学号id,就是唯一标识一个成员
    • 非唯一属性:多个成员的该属性值可以相同, 比如学生实体的性别就是非唯一的,大多数人都相同

    关系:菱形表示, 用于表示实体与实体之间的关系,比如学生实体和成绩单实体,它们之间的关系就是:每个学生拥有一张成绩单

    • 三种关系类型
      • 1对1:指实体模型A与实体模型B,A中的每个实体成员至多与B中的唯一个实体成员有关系,并且B中的每个实体成员至多与A中的唯一个实体成员有关系
      • 1对多:实体模型A中的每个实体成员至多与B中的唯一个实体成员有关系,但是实体模型B中的一个实体成员与模型A中的多个实体成员有关系。
      • 多对多:实体模型B中的一个实体成员与模型A中的多个实体成员有关系, 同时实体模型A中的一个实体成员与模型B中的多个实体成员有关系

    实体补充:实体还细分为弱实体和复合实体:

    • 弱实体:双菱形表示
      • 一个实体必须依赖于另一个实体存在,那么前者是弱实体,后者是强实体,弱实体必须依赖强实体存在,例如上图的学生实体和成绩单实体,成绩单依赖于学生实体而存在,因此学生是强实体,而成绩单是弱实体,强实体不存在,那么弱实体就不存在。
      • 弱实体和强实体的联系必然只有1:N或者1:1,
    • 复合实体:长方体内加一个菱形来表示
      • 还是不太理解。。

    属性补充:属性还细分为复合属性、多值属性和派生属性、可选属性,同时还有用来表示联系的属性,称为联系属性。

    • 复合属性:一个属性实际是由多个属性组合而成, 例如名字属性,它可以包含姓氏属性和名字属性;
      • 复合属性也有唯一属性,例如学生的所在班级属性,由于多个年级都有班级,所以单单班级属性是不唯一的,但是和年级组成的复合属性后则可以匹配成唯一属性。
    • 多值属性:用双线椭圆表示, 一个实体的某个属性可以有多个不同的取值,例如一本书的分类属性,这本书有多个分类,例如科学、医学等,这个分类就是多值属性
    • 派生属性:用虚线椭圆表示,派生属性的值由其它属性的值计算得出
      • 小组人数就是典型的派生属性,随着学生实例的参加的兴趣小组变化,小组人数属性也会变化,一般来讲派生属性不存在于数据库中,而是通过相应的公式进行计算得到,如果要放到数据库中,那么隔一段时间就要进行更新,否则会出现数据错误;
    • 可选属性:在椭圆的文字后用(O)来表示,该属性的值可以为空,这就是可选属性,如地址就是一个可选属性
    • 联系属性:联系属于用户表示多个实体之间联系所具有的属性,一般来讲M:N的两个实体的联系具有联系属性,在1:1和1:M的实体联系中联系属性并不必要。

    本周阅读

    第三周:1, 2, 3, 4, 7
    
    -
    
    最详细的IDEA中使用Debug教程:  https://mp.weixin.qq.com/s/kWepBAGy5Hb15GfrsEiSHw
    
    数据库的设计(E-R图,数据库模型图,三大范式): https://blog.csdn.net/Firewall5788/article/details/78112516
    
    Part 36: Writing Files: https://golangbot.com/write-files/
    微信大佬总结的算法学习经验: https://mp.weixin.qq.com/s/fECqsr3T4WKNcx7s-2ozuA
    
    -
    
    -
    
    数据库ER图基础概念整理:https://zhuanlan.zhihu.com/p/29029129
    

    相关文章

      网友评论

          本文标题:ARTS 第7周

          本文链接:https://www.haomeiwen.com/subject/apuqzqtx.html