数据结构和算法分析

LeetCode (算法与数据结构系列 2)

2019-05-14  本文已影响2人  剑指TOP

学习数据结构与算法,三分靠学习,七分靠练习,优秀的程序员都在使用的在线练习的算法题平台,LeetCode。
https://leetcode.com/problemset/all/

下面跟随我一起进行一个简单的练习来熟悉操作。

选择练习题:
image.png

可以根据椭圆选择中的难易程度,练习状态,标签(数组,哈希表,链表等)进行选择。
直接选择第一个进行练习。

进行练习:
image.png
按照解题步骤,主要分为三块区域。

三块区域也和数据结构与算法的解题步骤一一对应,首先拿到题目之后一定要仔细审题,看看具体要考验的是哪些知识点。然后作答之前要列出你能想到的所有解决方案,然后从中挑选最优解(时间复杂度最低)。
最终测试自己的答案并提交后,在讨论区中看看其他人的方案是否一致,是否比你的思路更好,能否优化自己的解题思路。

下面已实际的思考过程为例:
func twoSum(nums []int, target int) []int {
    for i, v := range nums {
        for k, m := range nums {
            if i != k && v + m == target {
                return []int{i,k}
            }
        }
    }
    return []int{}
}

2)一次循环,将循环过被需要的数放进 map O(n)

func twoSum(nums []int, target int) []int {
    mapNeed := make(map[int]int)
    for i, v := range nums {
        if need, ok := mapNeed[v]; ok {
            return []int{need, i}
        } else {
            mapNeed[target - v] = i
        }
    }
    return []int{}
}

思考的过程中只需要简单的对比时间复杂度即可,不需要写出完整解决方案,我这里只是方便大家思考。
很迅速的思考就能得到第二种方案更优。

系列会持续更新,需要查看可以进我主页。
如有疑问或者错误和遗漏,欢迎指正。

上一篇 下一篇

猜你喜欢

热点阅读