美文网首页
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

相关文章

  • 爱画画的你不可错过的九位神级水彩画家

    text/Oh Arts photo/网络 editor/包子 小岛今天入驻了新写手“Oh Arts”,今天她的第...

  • ARTS 第18周

    ARTS 第18周分享 [TOC] Algorithm 56. Merge Intervals [medium] ...

  • ARTS 第10周

    ARTS 第10周分享 [TOC] Algorithm 933. Number of Recent Calls [...

  • ARTS 第1周

    ARTS 第1周分享 Algorithm LeetCode 237 Delete Node in a Linked...

  • ARTS 第21周

    ARTS 第21周分享 [TOC] Algorithm 242. Valid Anagram [easy] [题目...

  • ARTS 第23周

    ARTS 第23周分享 [TOC] Algorithm 349. Intersection of Two Arra...

  • ARTS 第4周

    ARTS 第4周分享 [TOC] Algorithm 1021. Remove Outermost Parenth...

  • ARTS 第19周

    ARTS 第19周分享 [TOC] Algorithm 75. Sort Colors [medium] [题目描...

  • ARTS 第20周

    ARTS 第20周分享 [TOC] Algorithm 164. Maximum Gap [hard] [题目描述...

  • ARTS 第7周

    ARTS 第7周分享 [TOC] Algorithm 922. Sort Array By Parity II 难...

网友评论

      本文标题:ARTS 第7周

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