终于明白被人强行喂shi的感觉了,一个计算6层for循环,debug都捋不明白,我求求你们照顾下后来人



今天看到一个帖子,突然产生了共鸣。第一反应是想笑,笑完反应过来,自己不也是局中人吗?瞬间有想哭的冲动,真是又好笑又好哭。。。
来瞻仰下大佬发出来的代码:

这是我见过最强的map了,仔细一数足足有6个Map嵌套,好家伙,我看到就想跑!

多个for循环,生怕绕不晕你,再给你上个强度加个条件分支,就问你慌不慌?!
别急,我们来看看天才网友们是怎么看待这件事的。

热心网友说:替前人鸣不平,这不是前人不照顾,这是老板不照顾!还有网友说其天天吃,省省心,调整心态,实在不行就跑路。

”前人"网友出来说话了,我们还是需要给”前人“网友留点面子的,不然这位网友可能会做出一些危险的事情,这就不好了。
更有网友直接抛梗,上来一个表情包,耳边直接传来一声,”又不是不能用“~

你也遇到过这样代码吗?你是怎么应对的呢?
...
回归主线
📚LeetCodeTop100:挑战之旅
LeetCodeTop100开启连载啦!希望每天进步一点点,今天是第三天!
题目
128. 最长连续序列
给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。
请你设计并实现时间复杂度为 O(n) 的算法解决此问题。
示例 1:
输入:nums = [100,4,200,1,3,2]输出:4解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。
示例 2:
输入:nums = [0,3,7,2,5,8,4,6,0,1]输出:9
题解
先遍历一遍数组,生成一个map记录数组中出现过的数字。复杂度O(N)
遍历一遍map,统计最大连续长度,最差情况下,整个数组连续,此时总计算量为:1 + 2 + ... + N--1 ,为等差数列,最高为一次幂,所以复杂度也为O(N)
所以总的复杂度也为O(N)
代码
func longestConsecutive(nums []int) int {    // 创建一个哈希集合,用于存储数组中的数字    numSet := make(map[int]bool)    for _, num := range nums {        numSet[num] = true    }    // 记录最长连续序列的长度    longestStreak := 0    // 遍历哈希集合中的每个数字    for num := range numSet {        // 如果当前数字的前一个数字不在哈希集合中,则当前数字是连续序列的开头        if !numSet[num-1] {            currentNum := num            currentStreak := 1            // 继续递增当前数字,直到连续序列结束            for numSet[currentNum+1] {                currentNum++                currentStreak++            }            // 更新最长连续序列的长度            if currentStreak > longestStreak {                longestStreak = currentStreak            }        }    }    // 返回最长连续序列的长度    return longestStreak}
相关阅读
➡️ 失业的P9:他的四页半简历
➡️ 互联网巨头月薪分布,惊!30-50K居然最多
➡️ 2024最新955不加班公司名单
➡️ 图基础入门
🌟 码字不易,我是慕溪code,一个热爱探索热点时事、独立思考的信息技术爱好者。慕溪code致力于为你提供系统化的学习路线,涵盖了算法、后端、前端、架构等方面的内容。。如果您喜欢我的分享,别忘了点击下方的关注和点赞按钮哦!💼🚀✨
到顶部