粉丝11获赞9

大家好,我们上一个视频讲到这个岛屿数量这道题啊,就是题目的意思已经给大家讲了一遍,就说他给你的输入是一片二维网格,然后让你在这个二维网格里面,他们组成一条,组成成了这个水怪岛屿啊。然后你要在这个二维网格里面 找出那个岛屿的数量。我们上期可也讲到了,就是岛屿就是互相,如果能互相连到一块的岛屿,他们是合成为一块岛屿的,所以像这个这里面所有的岛屿都是一块的,所以这个岛屿数量就是一 像这个势利压里面他的这个所有岛屿,这个这个是一块岛屿,这是四个是一块岛屿,这个是一块岛屿,这个是一块岛屿,这个总共是三块岛屿。嗯,题目就是说给你一个二维的网格,然后我们要找出这个网格 里面找这个数量。嗯,那这个可以大家可以想一下啊,咱们现在这个算法,它的力量魅力就在于咱们是要模拟出这个具体找的过程,并且尽量让这个找的过程呢最优化,效率最高。 那咱们一般是怎么找?你看,以以这个是零一为例,咱们应该是先把水平方向或者竖直方向,这个岛屿是成块的六率全部找出来对吧?所以一个很自然而然的这个那个 想法,就是一个暴力人群的想法。就说比方说这个岛屿,先把他水放下,上下左眼四个方向岛屿全部找出来啊。比方说他啊,他在左边 方向,因为他在左边,是那个边吗?边上就是赔了一位,被水为包围,所以左边是没有,上面也没有,那他只有下边,就有下边和右边。我们可以以他为中心,向右和向下扩展, 那么从一一月中心向右扩展,他是他的相连的落地啊,像这个也是他相连的落地,所以这两个他们应该是一起,被称为是同一块落地。 那么以此类推。像这个你也可以向右扩展,向左扩展,向下扩展,向上扩展, 嗯,那以此类推。这些这些这些都可以扩展为同一块陆地。所以嗯,我们对于同一块陆地的话,如果他是同一块陆地,我们就把它 清除掉。这样的话我们就好算了。要不然的话,你想吧,这个跟这个是同和落地,这个是跟这个是同和落地。那我们在计算他的时候, 那他的左边是他是通过努力,你想啊,你再找这个一,再找右边的时候,已经计算了一遍右边的。 那么怎么说呢,就是就是第一个一在找右边的落地的时候,已经把这个一给找了一遍了。所以 我们在第二个一的时候,向左找的时候呢,我们就不需要再把左边这路里再找一遍,对不对?要不然就你找他,你看这个找这个,那这个又找这个,他们来回找,那就成死循环了。所以我们会有一个嗯停止的条件,就不让他这么无限循环的找下去。那么这个 条件怎么做呢?就比方说我们看这个这个第一个一的时候,先找的时候,我又先把这个楼梯, 他把它把它,我把它变成设为零,把它变成片水。你看我先,嗯,往右找,往下找,找完之后呢,我就把它变成水,这样的话,我这个数字再往回往左往左边找的时候发现哎,它是水,那就不用再找一边了,对吧? 那同理,那这个他在往上找的时候发现,哎,上面这个是零,把它变成零了,他是,他是一片水,那我就直接往往这边右边找,还往下面找对吧。


啊,大家好,今天我们继续做这个 lico 热体一百。呃,今天做这个切鱼水。 嗯,接雨水就是这样,给你 n 个恢复整数,表示宽度为一的柱子的高度图计算按此排列的柱子下雨之后能接到多少雨水。 哦,直接看压力吧,这个黑色的就是这个柱子,然后蓝色的就是雨水。问我们,呃,有多少个雨水能被卡在这些柱子之间?嗯, 我们可以针对每一列每一列的这个雨水来考虑。呃, 它的每一列的雨水的高度就就等于这个,它左边这个所有柱子的 最大值和右边所有柱子的最大值取一个命。 比如说这个雨水,他左边柱子的最大值是一,右边柱子的最大值是二,所以他去一,这是一个。如这个中间这一个, 他左边柱子的最大值是二,右边柱子最大值是三,然后我还要减去他本身自己的高度,减去本身自己的高度后,他就是二,这个就是二和三的最小值,取二,然后再减一等于一。所以我们就是要统计每个 格子他左边最大值和右边最大值就可以了。嗯,我们可以用双指针来做。 呃,左边指针从最左边开始,右第二个指针从最右边开始,然后我们每次策略是 移动这个较矮的指针,然后我们记录一下左边的最大值和右边的最大值就可以了。 嗯, in sex, 我们第一个答案等于零,然后第一个左边的最大值等于,先等于 hate 零,右边的最大值 等于 ita 这 l 吧 lr。 然后我们让小小牙的时候就一直走,就是如果左边的比右边的高,我们就应该是 更新这个 l m 啊,就应该是让啊减减 l l m r m 等于 max r m 额外的发, ok, 然后右边也是这样, 不要这个,不要这个 max。 让我们讲讲应该在什么时候统计这个答案。答案应该是在 他移动的时候停机,是移动之前,比如这个,这个这个在这里,这个在这里,应该在移动之前统计到了。 呃,这个还得可以领取一个最大值,不然减的那个负数, 嗯。

我解决了好多立扣的题目,当我还没找到工作,那就来做下一个立扣题目吧。最后,我收到了 google 的面试邀请,我已经面试了十几次了, 经历了数百小时的苦战和问题解析,我逐渐明白了备考的不同层次。我将分享我对这个过程的所有感悟,包括如何练习、你需要解决多少题目,要避免的常见错误,以及我是否认为在 lico 上练习完全是在浪费时间。 和大多数人一样,我从简单的题目开始做起,我用的是 c 加加,因为这是我学的第一门语言。但是这其实有点不妥。不过我到后来才意识到这个问题。最初我甚至连简单的题目都解不出来, 即使我知道答案边界的情况也常常让我困扰。我并不是数据结构和算法的高手,我主要了解的是基础知识,比如数组列表、哈西映射数排序,还有二分搜索。坦率的说,我认为在你 真正开始解题之前,这些基本知识已经足够了,因为很多简单的题目会帮助你深化对基础知识的理解。然后,在我解决了五十个题目之后,我就达到了这个水平。 我能解决很多琐碎的题目,比如反转字符串或翻转二叉数,但我根本没碰过图的题目,我甚至不知道什么是动态规划。但无论你信不信,解决了五十个题目后,我就找到了一家银行的实习机会。 但我知道,如果我想在一家大科技公司找到工作,我就必须继续努力,所以我就继续随机的做题,这也是一个错误。但大约在我做完六十或七十个题目之后,我开始使用拍散了。 我经常看 lico 的讨论区,我发现拍散的代码总是最短且最简洁了。虽然我之前从未使用过拍散,甚至到现在我在工作或实习中也从未用过拍散,但这是一个很自然的选择,因为你并不需要全面学习这个语言,你只需要 要掌握基本的语法,如何编写 f 语句复循环,以及所有的标准数据结构和方法。实际上,你可以在做 lico 题目的同时,根据需要 google 学习这些知识。 现在看来, c 加加其实也不是个坏选择,但我肯定会避免像招拜这样涌长的语言。语言选择可能不会成为决定性因素,但在你敲代码时选择一种简洁的语言,实际上可以节省你几分钟的时间,这在真实的面试中肯定会产生影响。 不过,如果你实际上不能解决问题,那么你敲代码的速度就没那么重要了。即使在解决了一百个问题后,虽然我已经掌握了所有的核心算法,比如深度优先搜索 dfs, 广度优先搜索 bfs, 滑动窗口回速,我依然不能稳定的解决一个新问题。 那时候我并不知道,但原因是许多 lico 题目都是有顺序的。你可能见过像 house robert 一、 house robert 二和 house robert 三这样的题目,显然 你应该按顺序做这些题目。但实际上,大部分立口题目也都应该按照一定顺序来做。例如,除非你已经对回宿有了深入理解,否则你永远不应该尝试做动态规划题目。 除非你对数有深入的理解,否则你可能不应该尝试做图的题目,这再回头看来是显而易见的,但我确信很多人都会犯这个错误,这也是我创建学习路线图的原因,以免你重复我犯过的错误。 解题的顺序的确很重要,我也认为每天坚持解决一两个问题比死记硬背要好的多,因为这样思想实际上会更有粘性。如果你需要一点动力,我在我的第二频道上每天都会做 lico 的题目。 随着我持续努力,我发现如果我不能在四十五到六十分钟内解决一个问题,我就不可能自己解决他。以前我会在一个问题上花费三到四个小时的时间去思考,因为我认为这是唯一的学习方法。 但让我们面对现实,我们大多数人是不可能自己想出一些复杂的学术算法的。即使你能想出 floys tortoise and hair 算法,这也可能不是你时间的有效利用。 只要你能完全理解为什么他有效去看解决方案,并没有什么可羞愧的。这就是为什么在我的视频中,我都会尽量解释我解决每个问题背后的思考过程。 这最终为我节省了大量时间,因为我会遇到非常困难的问题。我喜欢把他们称为疯狂的题目,比如爆破气球,我可能已经接近解决了。我知道这是一个动态规划的题目,但我就是找不到背后的窍门, 然后我就会去看一个解决方案。只看了五分钟,我就会意识到,哦,那就是窍门。然后我就能马上解决问题。我能比解决前一百个问题快的多的从一百个解决的问题提升到二百五十个解决的问题。到那时,我已经掌握了我需要的百分之九十九的模式,甚至一些复杂 杂的模式。我已经达到了能够像写幅循环一样轻松编写这些算法,如 d f s b f s 二分搜索的地步。即使是一些高级的如并查集 dexter 算法,我也能在不到五分钟的时间内写出来。 那是我意识到大多数粒扣题目都可以归结为这些类别。对于中等难度的题目,你只需要找出需要的算法,然后应用它。难题也类似,只是通常背后有一个非常复杂的窍门。 在某些时候,只有当你之前遇到过这样的问题,或者你信奉上帝,或者你遇到了一个特别大度的面试官,才能帮你找到答案。这个阶段,我有信心我能够通过面试,但我不敢百分之百保证我是否已经做好了面试大公司像 google 或 facebook 这样的准备。 其实你可能永远都不会觉得自己准备的十分充分。面试准备好与否并非非黑即白的问题,因为你永远无法预料到将会遇到哪些问题。这更像是一 个分布情况,你可能有百分之五十的把握能够通过,也可能有百分之九十的信心能够通过。如果你是个完美主义者,我相信你希望自己有百分之一百的把握,但实际上这几乎是不可能的。 我觉得一个合理的标准是,你应该能在二十到二十五分钟内解决一个你从未遇到过的中等难度的问题。如果你能做到这点,你就有可能至少有百分之八十的把握能通过大部分大厂的面试。 虽然我已经入职了 google, 但我仍然坚持完成了五百六十九道题目,主要是因为我是个不达目的誓不罢休的人。但这并不像你可能想象的那样耗费太多时间,因为我已经能在十到十五分钟内解决大多数中等难度的问题。 但我并不推荐这样做,因为过多的解题并不能带来相应的收益。我更看重解题的质量,而非数量。我建议大家尝试解答大约一百五十道题目。像 nico 幺五零列表那样, 列表提供了十四种语言的视频解题和代码解决方案,但一定要确保你真正理解了每一个问题。大部分人的一个常见错误就是他们不去回顾过去的问题。为了真正理解这些复杂的算法,你需要反复练习。 这就是我为什么要把妮蔻幺五零列表中的每个问题都转化成多项选择题的原因。因为重新做每一个问题真的很麻烦,大部分时候你只需要复习一下技巧就可以了。 因此,我制作了一些你应该能在几分钟内完成的测验,同时这些测验也能帮助你学到很多知识。你现在可以去试试一些问题,但当整个列表完成的时候,你应该能在一天之内完成它。我相信这样做可以为大家节省大量的时间。 那么,经过这些之后, lico 只是在浪费时间吗?如果你正在试图学习编程,并且实际上手作应用,那么 lico 可能并不能帮到你。但是,有人愿意花费数 千小时获取计算机科学学位,已获得一份体面的工作,为什么就不愿意多花一些时间在 lico 上学习来获得更高的收入呢?对我来说,这实在不合理。不要误会,我并不是说 lico 是全世界最有趣的事情, 但我却信他能帮助你思考边界条件,还能帮你理解如何对你的代码进行单元测试。这些技能都是应用程序开发中的必备技能,信不信由你?算法和数据结构在各种工业领域,从数据库引擎到编译器都有广泛的应用。

大家好,我们今天现在开始做这个粒扣的一百题。从这个开始。这个题是字母 意味词分组。看一下啊。给一个字无算数组。将我需要将意味词组合在一起。意味词是指将一个单单词重新排列后得到另外一个单词的压力。 n a t 跟 t a n 是一组。就是说如果两个单词里面所有的字母出现的次数是一样的,他们就是一个字母意味词。需要将它 分成一组。 bat 是一组, ate 是一组, at 跟 ea 是一组。 ok, 从这里看来,其实我们是需要将呃每一个单词给他加上一个组 组的编号就行了。可以这样想,因为一组内的单词,它的字母出现的个数次数都是相同的,所以我们将这个 呃同一组内的这个单词排序后,他应该是同一个单词。所以我们可以他们排序后相不相同来判断他们是不是同一组。然后我们给排序后相同一组的单词就给他同一个组的标号。 ok, 大概就这么做。我们首先首先我们可以定一个答案,他应该长出来了,他是返回一个 viktor victor 类型的。我们定一个 answer。 我们用一个 map 来记录一下这个每个单词排序后他所他的标 号是什么。它应该是一个是运应测到应的一个类型。然后再记一个组的编号。从零开始。 ok, 我们可以便利这个给的单词组。 呃,我们可以先获取它。定一个试卷,搞一个中间变量,因为防止它排序后找不到原来的变量了。 我们将这个 tm 进中间面料进行一个排序。我们可以判断一下这个这个排序后的这个单词是否出现过 tm, 如果 如果他没出现过,我们需要进行一个处理。我们就需要把它放到我们这个排序的速度中,让他的编号等于 cnt, 然后 cnt 再加加,进行下一个编号。 同时我们也需要初始化这个 answer 里面的,因为它是一个 victor, 需要初始化一下的。不是不是白和一个进去一个 victor。 ok, 这样就保证所有的这个字句是出现过的。嗯,把它放到它对应的主别里面去。 过去的他的主别就是那谱,这个就是这个,这个东西就是这个字啊。单词的主别。我们把它放到这个组里面去,应该是把原始的诗句没有排序过的放进去。 然后我们返回一下这个昂首本地通过了,我们可以提交一下。 ok, 那么这一题就已经通过了。我们接下来会逐步做完这个热体一百。 这些简单简单的我们就不做了,做这个从这个中等的开始,包括中等或困难的。 ok, 今天就到这里。

有没有比立扣还好用,而且还免费并且被名企点名认可的刷题平台?给大家推荐这个神器 hackerack, 它不只是一个刷题网,同时还是很多金融科技 top 名企的专属 oa 平台。很多参加过麦肯希、高盛这些名企鄙视的同学都表示在做 oa 的时候遇到了 hackerack 上面做过的原体, 而且高盛甚至在官方面试指导中直接点出候选人需要在投递简历前熟悉 haggerlank 的操作,可以说是民企御用刷题平台了。 haggerlank 可以根据你的面试时间定制专属刷题方案,而且你还可以根据自己的需求选择拍港、 serk、 c 或者任意方向进行练习。 每个学习主题还分为简单、终极、困难三个等级。大家都知道立扣上面的题目即使是最简单的也很难,而这个网站上面,大家就既能找到非常适合新手小白入门的简单题,而困难的题目也跟立扣上困难题目的难度不相上下。并且这些题目还进行了严 严格的板块细分,无论你是新手小白还是刷题老手,都可以迅速上手。比如拍手就被分成了基本、数据类、扁囊派等多个学习板块, 你可以按需选择自己想练习的模块以及难度来进行针对性的练习。但是该立刻一样,很多同学拿到这个网站的时候呢,并不知道要按照什么样的顺序刷题,也不知道怎么高效的刷题。 这里有一份录刷题笔记,笔记内容按照 python、 siri 言、 java 等常用的语言进行区分,题目和答案一一对应,只要搜索关键词就可以第一时间找到对应的答案,而且所有的笔记内容都包含了一题多解的思路, 来自全球口鼎大臣的各种思路,可以帮你打开脑度,开发自己的全新解法。并且这些所有的题目都来自明起高频考题,已经标注了难易程度同低道高,刷完这也可以说你的 offer 就十拿九稳了。

list code 第十二题是整数转罗马数字。对罗马数字熟悉的朋友举个手,不熟悉的咱看下题。罗马数字包含七种字符, 他们和阿拉伯数字对应关系如图,感兴趣可以暂停看一下哈。另外还有一些特殊的数,比如自其是是用 rv 来表示, 意思是 v 减 i 等于四。这样的数一共有六个,大家自行观看下对应图。罗马数字的这个机制一开始我真没看明白, 后来又是查资料,又是偷看答案,才算基本清楚了。这就和现实中买东西一样一样的。如果需要付款一或二或三块,我们可以排出一或两或三枚硬币。 但是如果需要付款四块钱呢?那可以潇洒扔出五块大钞一张,然后近代对方找零一块。罗马数字类似一二三分别长这个样子。二就是两 两个一挨在一起,三则是三个一。到了四就变成这样了,意思是五减一为四。不过罗马人比较有意思,从五块中把一块大小扣掉,并管这个残缺的五块叫四块。还是用买东西做类比,如果你买三九零块钱的东西,那正常来讲,你会给对方 三张一百,一张五十,两张二十的。罗马数字也是类似的,尽量给人家大额钞票。首先也是三张百元大钞, 然后却不是五十元钞票了。因为罗马人可以扔出一张九十面额的钞票。这张九十的钞票是由一百扣掉十块形成的。我们来重新梳理一下。整数转罗马数字, 就相当于拿一套特殊钞票购物。这些钞票面值比较有个性,除了正常的一块五块,竟然还有四块、九块九十九百的。付款的时候我们尽量使用 大额的钞票,不然容易被骂。最后我们把这些钞票按照面额从大到小一字排开。这就是最终的答案了。好像是初中时候有一篇课文,想到有人把一千两百写成一百万零二百,和罗马数字有异曲同工之妙。 不知道这样讲容不容易听懂,更关键是不知道我理解是否准确。如果理解有误,欢迎评论区留言指正。大家再看下代码截图,我先去抢点新鲜蔬菜去。
![[leetcode 讲解---c语言]每日一题,逐题讲解—01两数之和#编程 #程序代码 #算法](https://p3-pc-sign.douyinpic.com/image-cut-tos-priv/4bdb558c0479d80c3db6fe73a4b1e45d~tplv-dy-resize-origshort-autoq-75:330.jpeg?lk3s=138a59ce&x-expires=2086484400&x-signature=ifegMDvWcA8L4Qq90i7ASiN9Dl8%3D&from=327834062&s=PackSourceEnum_AWEME_DETAIL&se=false&sc=cover&biz_tag=pcweb_cover&l=202602151148119309D234A6E67D62DD11)
大家好,欢迎来到今天的立刻每日一题。嗯,这个系列呢?首先我想给立刻做一个专题系列,就是每天一道题的讲解,按照从第一题,然后目前他是有两千一百 切四道题,按照每天一题的嗯进行讲解。然后呢,我会用四亿元的算法来进行每道题的讲解,因为我看现在全网用四亿元解的讲解的视频几乎没有,一般都是用加法或者其他 编程语言来进行讲解。然后首先呢,我们先来看题题,也就是两数之和。 我们来看一下题干。嗯,给给另一个整数 ms 和一个整数目标值,他给请你在数字中找出何为目标值,他给你两个整数,并返回他们的数据下标。假设每种输入只会对应一个答案,但是数字中同一个元数的答案也不能重复出现。 然后我们可以看一下视力,嗯,首先视力他会给你一个 max 数组,然后里面会有各种值,然后他的目标只是九。然后你就要嗯,找出 这个数字里面两个和为九的那两个数字,然后并返回他们的下标。我们可以看到点赞下给他。在他给的例子里面,这个七和二明显等于九。然后他返回他的下标,零跟一,然后失利,二就是嗯, 他的目标值为六,然后也就是二加四,也就是一和二的位置。然后他给六,就是零跟一的位置。然后首先在做这道题之前,我们先看一下鱼, 这边要调成 c 语言的状态。然后首先我们看一下他现在给我们是这个函数,然后要了解这个函数的作用是干嘛的。这个 max 也就是 提杆会给我们的数组,也就是他传过来的那个数组。然后 max 带的这个变量,也就是呃他传过来这个数组,他的大小 也就是长度。然后这个他给就是目标值,然后雷吞晒之后就是返回宿主的那个大小。嗯。经过这一段分析以后,嗯,首先我们来对他进行处理。很明显就是需要呃最简单 想到的方法就是暴力破解。也就是两个破循环,对他每个值进行便利。然后我们来写一下 首先印的 id 零,然后 i 小于,也就是对他的每个数进行便利,然后也就是小于 manss, 然后 i 加加。 然后假设我们这取了第一个数,那么第二轮循环就要取第一个数以外的其他数字。然后二取完以后,我们就从七开始取,然后七取完以后就取七后面的数字。所以我们这边第二轮内 腹部循环就是 的 j 等于 i 加一,因为他始终他会在他后面一位开始,然后 接小鱼,然后接佳佳, 然后取出他里面。呃,取出他就取出他的第一个元素跟第二个元素他们的和进行比较。就是说衣服。如果这个数组的 加上他的和,会等于最这边是两个等号, 等于他的给的给定的。他给目标是 的话。然后那我们就找到了这个目标值,然后同时返回他的下标。我们可以看到,嗯,他这里要求返回的是一个硬的心, 也就是呃,一个印子形的一个指针变亮后,也就是这样子的。所以呢,嗯,我们在前面需要定义一个动态的束缚, 里面来存放他要输出的这两个位置,也就是 一个 有没有抢到,把它抢转成整形的。 这句话的意思就是我们动态的给他创建了一个整形指针,然后把它长短成整形,然后里面 他的每一个单位就是硬的心。然后有了这个以后,我们来对他进行复制, 论零就会等于于他的下标,也就是 i, 没错,小表 i, 然后他的第一个小表也就是返回另一个职业之间。 然后返回完以后,然后我们要对这个雷吞赛进行设置 新蕊藤塞子等份。可能有的人到这里就会很懵,为什么这边是新蕊藤塞的,而他明明是一个呃整形的指尖,但是却能布置一个整形变量,那这里我们就来看一下。 嗯,看下这个例子。这里呢我定义了一个雷吞塞子,然后也是整形指针,然后这里他是指为闹为空,然后同时呢定位定义了一个呃印特型的一个整形变量 i 复制为三。然后这里呢我们给雷特 赛子赋予了这个爱的他的地址传过来,那我们来运行一下看看,然后普瑞的福州输出爱的字,然后以及心里的塞泽字。 如果这雷吞塞子前面不加信号,也就是取到他的地址,也就是这个地址,他的地址,他的直线就会付给了这个雷吞塞子。那心 心里的塞就是把这个纸给取出来。所以呢,我们进行一下,然后就会两个三都输出出来。所以呢,我们这边也没有问题,就是心里的塞。那么如果这两个货循环找完, 都没有找到这两个位置,以及和加起来为他给的这两个呃两个下标,如果没有的话,那我们就把铝通塞子这个复制为零。同时这个 宿主我们来发抖音闹,然后应该没什么问题。我们来跑一下试试看。 是我网卡了吗?我们来看一下啊。这个。 嗯,这个是有点问题的。这个这句话我们来看一下啊。这个单词拼错了 那种。可以我们再运行一次。 哎。陈玉琴这么久可能有什么问题来看一下。 我们来看一下。这边是出了什么问题。 十八 看一下。应该是这个信号的问题,不加信号试试哦。我们没有雷特。 哎,想起来了,少了个雷特。不是这个型号的问题。 我们最后要把 这个数组给返回,我们忘记返回了,然后这边也需要。 然后这里呢是把这速度给返回, 我们再跑一次。 嗯,这里执行出错,我们来看一下。这里应该是有什么问题的。 不好意思,就是指针指不到这一块位置。那我们这里 怎么说呢?那我们这里就不能这样子给他复制,因为我们嗯,这里就给他定义成一个 数数吧,这样试一下。 错了,不应该这样对,你应该这样, 你没有定他空,他的大小,给你两个应该就够了。你再运行一次 同款。因为呢?嗯,我们一开始给他定义的这个时间的空间大小,没给他复制, 然后现在我们给他复制了两个单位。所以呢,嗯, 这边他就能通过了。就是自己的父子瑞要在这边获取到,就是要给他动态的开辟一个空间,他才能有位 起来存放。这两个起一开始如果没有这个二的话,他就是你不知道他多大,就是没有 给他指定的空间,然后计算机他也迷茫了,他也不知道该怎么去执行,然后所以我们这个给他开辟了空间,然后取他的首地址和第二个地址,然后给他复制 i 跟 g。 然后所以呢,这里我们可以看到就通过了。然后呢,嗯,这就是我们的立刻第一题,然后可以看到就是编写代码时候有很多就意想不到的问题, 我们要去一个一个的进行解决。然后这个系列呢,我也会一直做下去。然后我们可以看到现在我自己是只做了三道题,目前在 做第四题,然后我会尽量做到每日一更,然后把这两千一百七十四题 一起做完,然后大家一起都要提升。然后我这边采用的是 c 圆上方 c 圆编程。然后嗯,可能有很多像加瓦啊,或者拍成他的代码,写起来会更加的简单。 但是呢,我们这边是最用实体语言进行讲解,然后希望也可以帮助到大家,用最通俗的语言来帮助大家。谢谢。我们今天就到这里。

每逢周末睡懒觉,每逢周末选题难,其实每天选题都很难,选题是一个很痛苦的事情,以后干脆按 let's go 的题库顺序往下讲吧,遇到不好讲,不够有趣,不会的题,就直接跳过 let's call 的第一题讲过啦, 今天我们分享下第二题。两数相加,两个非空链表表示两个非负整数,每个节点只能存储一位数字,他们的每位数字都是逆序存储的。请将两数相加,并 并以相同形式返回一个表示和的链表,比如幺三五七九用链表逆序表示,是这样的,大家注意顺序是倒过来的。再比如,二四六八是这样的。两个数加起来是多少呢? 手头没有计算器,咱们口算一下。个位数九加八等于十七,合的个位数是七,然后向十位数 进一,和的十位数是七加六,还要再加个位进的一七加六加一等于十四,这样十位数为四,并向百位进一。同理,五加四加一,百位的零进一,千位数是三加二加一的六进零。现在来看,万位数八六四二,没有万位。我们可以脑补成万位为零, 因为千位也是近零。这样核的弯位就是一加零加零等于一。我们把表示核的链表倒过来念,最后的核就是幺六零四七,掏出计算器验证一下,完全正确。我们总结下这道题的要点, 第一和超时要进位,第二长度不一样,短数高位补零。其实还有第三点,例题中没有展示,就是要注意和的位数可能变多,比如九加九的和是两位数十八。所以第三检查最高位 有没有进位。现在进入代码展示环节,大家请抬头看大屏幕,边看我边啰嗦两句吧。这道题似乎没啥用, 如果核比较小,的确如此,但如果这两个数超过任三十二上线,就可以用这道题计算他们的核了。好了,不多说了,祝大家周末愉快,咱们明天再会。

看一下 like code 第两百八十七题,寻找重复数给另一个整数个数 a, n 加一的数组 numbers, 其数字都在一道案范围内,含义和 n。 假设 numbers 只有一个重复的整数,返回这个重复的数,要求不修改数组 numbers, 且只用常量级的额外空间。这道题曾经被某团拿来做面试题,我们之前也分享过好几道类似的题目, 寻找唯一出现一次的数字,寻找出现次数过半的数字等等。不考虑效率的话,有些方法也能用到这道题上。 回到这道题,先说思路。我们在一道 n 之间随便取一个数 m, 那么重复数或者出现在一道 m 这个区间,或者出现在 m 加一道然这个区间。我们这时候数一下数组中小于等于 m 的数有多少个。如果小于等于 m 的数的数量大于 m, 那么重复数必然在一到 m 之间,否则重复数必然在 m 加一到 m 之间。如果 m 是一和 m 的平均数,我们就把重复数范围缩小了一半。无论重复数是在一到 m 之间,还是 m 加一到 m 之间, 我们都继续取中间值,然后再数一下小于中间值的数字的数量。这样反复二分下去,容易知道一共轮循劳个二 n 次,即可确定重复数字,这也就是二分法。智力代码电截图由于题目限制,只能使用常量额外空间, 我们无法对单个数字出现的次数做缓存,因此绕杆连次二分,每次我们都要把整个数组轮群一遍, 所以最后的效率是按 logan, 而不是 ogan。 这道题还有一个升级版的要求,要求时间复杂,不为 on, 略有难度,大家可以自己想一下,想不出来也没关系,明天我们继续分享效率 on 解法。