ARTS 第17周

2019-07-28  本文已影响0人  陈卧虫

ARTS 第17周分享

[TOC]

Algorithm

2. Add Two Numbers

[参考代码]

/**
 * Definition for singly-linked list.
 * type ListNode struct {
 *     Val int
 *     Next *ListNode
 * }
 */
func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
    tmp1 := l1
    tmp2 := l2
    num := 0

    //var ResLi *ListNode
    ResLi := &ListNode{}
    resLi := ResLi
    preLi := resLi
    // 当两元素相加小于10,直接插入; 大于等于10,插入余数,下一位加1
    for tmp1 != nil  {
        // 取值相加
        if tmp2 != nil {
            num = tmp1.Val + tmp2.Val
        } else {
            num = tmp1.Val
        }
        // 值存入新list
        resLi.Val += num
        // 判断是否大于10
        if resLi.Val >= 10 {
            outNum := resLi.Val/10
            resLi.Val = resLi.Val%10
            resLi.Next = &ListNode{Val:outNum}
        } else {
            resLi.Next = &ListNode{}
        }

        tmp1 = tmp1.Next
        preLi = resLi
        resLi = resLi.Next

        if tmp2 != nil {
            tmp2 = tmp2.Next
        }
    }

    for tmp2 != nil {
        num = tmp2.Val
        // 值存入新list
        resLi.Val += num
        // 判断是否大于10
        if resLi.Val >= 10 {
            outNum := resLi.Val/10
            resLi.Val = resLi.Val%10
            resLi.Next = &ListNode{Val:outNum}
        } else {
            resLi.Next = &ListNode{}
        }

        tmp2 = tmp2.Next
        preLi = resLi
        resLi = resLi.Next
    }

    if resLi.Val == 0 {
        preLi.Next = nil
    }
    return ResLi 
}

3. Longest Substring Without Repeating Characters

func lengthOfLongestSubstring(s string) int {
    max := 0
    front := -1
    rear := -1
    strMap := make(map[string]int)
    for i, v := range s {
        // 从map中提取
        if ins, ok := strMap[string(v)]; ok {
            if ins > front {
                front = ins
            }
        }
        strMap[string(v)] = i
        rear = i

        if tmpMax := rear - front; tmpMax > max {
            max = tmpMax
        }
    }
    return max
}

Review

Learning to Use Go Reflection — Part 2:https://medium.com/capital-one-tech/learning-to-use-go-reflection-part-2-c91657395066

Tips

git删除远程分支

Git v1.7.0 之前

Git v1.7.0 之后

git合并另一分支中的单个提交
命令行通配符:http://www.ruanyifeng.com/blog/2018/09/bash-wildcards.html
  1. ?字符代表单个字符
  2. *代表任意数量的字符。
  3. [...]匹配方括号之中的任意一个字符
  4. [^...]和[!...]表示匹配不在方括号里面的字符(不包括空字符)。
  5. {...} 表示匹配大括号里面的所有模式,模式之间使用逗号分隔。
  6. {...}与[...]有一个很重要的区别。如果匹配的文件不存在,[...]会失去模式的功能,变成一个单纯的字符串,而{...}依然可以展开。
  7. {start..end}会匹配连续范围的字符。

share

解决算法题的思路:

​ 先简单---> 再复杂;<把一个复杂的算法,拆分成多个简单的问题,然后在逐个解决>

大O到底的由来

心里对算法中渐进时间复杂度为什么用大O符号表示有疑问,最近认真查了下维基,小本本记下来:

这周看了几句话,让我开始更加关注自己所在的环境:

多数人都是群体效应的产物。承认吧,环境就是一个大染缸,无论你本色啥样,最终难以摆脱统一的色调。

其实我们的一生就是在为改变自己所处的环境奔波:

本周阅读

第四周:1, 5, 6, 
git中利用rebase来压缩多次提交: https://blog.csdn.net/itfootball/article/details/44154121
(Git)合并多个commit: https://segmentfault.com/a/1190000007748862
优秀程序员的经验:https://mp.weixin.qq.com/s/aHE0UPjtUqOiykbNU7ug_g

Go语言能做什么: https://juejin.im/post/5ca5c1abe51d4524613ec1b3
Git远程操作详解: http://www.ruanyifeng.com/blog/2014/06/git_remote.html
命令行通配符教程: http://www.ruanyifeng.com/blog/2018/09/bash-wildcards.html
深度解密Go语言之channel: https://mp.weixin.qq.com/s/90Evbi5F5sA1IM5Ya5Tp8w

10张 GIF 动图让你弄懂递归等概念: https://mp.weixin.qq.com/s/_8Qy1NQ3fZSzg3tlbInbYg
上一篇下一篇

猜你喜欢

热点阅读