changgyhub / leetcode_101

LeetCode 101:和你一起你轻松刷题(C++)

Home Page:https://www.changgy.com/leetcode-101

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[作者留言] 意见征集

changgyhub opened this issue · comments

单独开一贴征集一些意见吧。

=================

笔者自Waymo入职已一年有余,闲来重看此书,忽觉代码风格实在不够标准严谨。如果有空会按照Google Code Style重写一遍代码。

近来实在没有太多空闲时间,有时想写点别的书却抽不出时间。工作后确实很难在完成工作内容、锻炼身体、玩游戏之外再有余力。如果有长假期,可能考虑稍微写一些关于无人车的内容吧,在不泄露任何公司机密的情况下给各位读者介绍一下行业的现状。

另外如果你在读完此书后顺利通过面试而入职,又恰好在硅谷,请备注私信我,我请你吃炸鸡。

另外,最近收到一些疑似读者的微信好友请求。请您备注姓名或GitHub用户名,并注明来意,以免我当作陌生人忽略掉。感谢理解。

最近准备换工作,刷题的时候看到网友推荐的这本书,照着刷比漫无目的的刷轻松很多!感谢作者!
下载到的是V1.0,刷到6.3 回溯法的51. N-Queens (Hard)时,发现副对角线数组rdiag的下标有问题,今天找到官网发现最新版已经修正了。再次感谢作者!

写的挺好的。似乎第十二章 字符串那边pdf生成有重复。

写的挺好的。似乎第十二章 字符串那边pdf生成有重复。

是不是因为你是直接在github上看的而不是下载再看?最新版本在我这里并没有这个情况

写的挺好的。似乎第十二章 字符串那边pdf生成有重复。

是不是因为你是直接在github上看的而不是下载再看?最新版本在我这里并没有这个情况

噢是的 我下载了就没有重复了。

大大好,今天想要尝试下载发现不能下载了,
具体显示为:Sorry, this file is invalid so it cannot be displayed.

大大好,今天想要尝试下载发现不能下载了,
具体显示为:Sorry, this file is invalid so it cannot be displayed.

我这边是可以下载的,是不是因为你被墙了/服务器有问题?

大大好,今天想要尝试下载发现不能下载了,
具体显示为:Sorry, this file is invalid so it cannot be displayed.

我这边是可以下载的,是不是因为你被墙了/服务器有问题?

谢谢!发现开了vpn,关掉就好了。

在看第七章 542, 广度优先搜索的时候一开始如果enqueue所有0,遍历一遍矩阵就ok?应该还是mn不会是m^2n^2的情况。

在看第七章 542, 广度优先搜索的时候一开始如果enqueue所有0,遍历一遍矩阵就ok?应该还是mn不会是m^2n^2的情况。

感谢关注!我在那里提到了可以做memoization,您说的方法其实是也是需要做记录的,本质应该是一样的。

看到第十章了,真的很不错。感谢。

如果您日后有精力,希望您能将本书通过出版社出版,鄙人很希望手边能有一本排版精美的、纸张舒适的C++刷leetcode的实体书😊😊

如果您日后有精力,希望您能将本书通过出版社出版,鄙人很希望手边能有一本排版精美的、纸张舒适的C++刷leetcode的实体书😊😊

其实也有出版社联系我,但是因为我本人没有Leetcode题目的版权,而且人在美国,如果要在**出版可能会有些奇怪的潜在法律风险。如果需要您可以去当地大学城附近的专业打印店打印一份(那种带硬皮的),一般他们经常接这种服务,价格不会太贵。

如果您日后有精力,希望您能将本书通过出版社出版,鄙人很希望手边能有一本排版精美的、纸张舒适的C++刷leetcode的实体书😊😊

其实也有出版社联系我,但是因为我本人没有Leetcode题目的版权,而且人在美国,如果要在**出版可能会有些奇怪的潜在法律风险。如果需要您可以去当地大学城附近的专业打印店打印一份(那种带硬皮的),一般他们经常接这种服务,价格不会太贵。

好的,感谢您的回复

97页149题确定是对的么?
如果每条线只用斜率来确定,那岂不是会出现把2条平行线上的点算到一起去?
unordered_map<double, int> hash; // <斜率, 点个数>
test case: [[1,1],[2,2],[0,1],[1,2]] 应该返回2噢
Screen Shot 2021-09-25 at 10 34 52 PM

97页149题确定是对的么?
如果每条线只用斜率来确定,那岂不是会出现把2条平行线上的点算到一起去?
unordered_map<double, int> hash; // <斜率, 点个数>
test case: [[1,1],[2,2],[0,1],[1,2]] 应该返回2噢

(1)您誊写if else的花括号有问题,我这边跑是对的,请再检查一遍。
(2)如果对题目有问题请单独提issue,尽量不要在非符合您要求的主题提问。

首先感谢您分享的做题经验和题解~ C++选手狂喜。
然后提一个小建议,如果会更新新版本,可以把本仓库的地址贴到明显的地方[重复出现也可],让大家能找到真正的讨论的地方。目前好像只有最后一页点击超链接能找到这里,其他地方没有描述或者页眉页脚标注这里的地址。
很多的公众号使用您的这本101作为引流工具,虽然增加了101的传播范围,但是也使得通过公众号获取的朋友,并没有来过这个仓库,所以Issues看上去很少。
当大家都来到这里的时候,可以由大家来提交Java或Python版本的题解~ 让其他语言同学能够有所参考
再次感谢您的分享哈哈哈~

首先感谢您分享的做题经验和题解~ C++选手狂喜。 然后提一个小建议,如果会更新新版本,可以把本仓库的地址贴到明显的地方[重复出现也可],让大家能找到真正的讨论的地方。目前好像只有最后一页点击超链接能找到这里,其他地方没有描述或者页眉页脚标注这里的地址。 很多的公众号使用您的这本101作为引流工具,虽然增加了101的传播范围,但是也使得通过公众号获取的朋友,并没有来过这个仓库,所以Issues看上去很少。 当大家都来到这里的时候,可以由大家来提交Java或Python版本的题解~ 让其他语言同学能够有所参考 再次感谢您的分享哈哈哈~

感谢抬爱!首页加了一个讨论区

贪心 2.3区间问题 的 435 题目中sort第三个参数“ [](vector a, vector b” 测试点58会显示超时,而换成官方解答的“[](const auto& u, const auto& v” 就能通过 作者可以修改下 顺便告诉一下原因吗 谢谢啦

贪心 2.3区间问题 的 435 题目中sort第三个参数“ [](vector a, vector b” 测试点58会显示超时,而换成官方解答的“[](const auto& u, const auto& v” 就能通过 作者可以修改下 顺便告诉一下原因吗 谢谢啦

我这边刚刚跑了一下是可以过的,
Runtime: 376 ms, faster than 89.45% of C++ online submissions for Non-overlapping Intervals.
Memory Usage: 89.7 MB, less than 82.16% of C++ online submissions for Non-overlapping Intervals.
您看看是不是抄写错误?

应该请你吃炸鸡才对,功德无量🙏

小白建议提供练习题的答案

感谢作者,看了这pdf一个多星期,有针对性补漏,比之前乱刷leetcode效率高了。
有两个小建议:
1、列出时间复杂度和空间复杂度,个人之前面试翻车了,题目做出来,但面试官问到复杂度说不上来
2、题目链接可以加一个中文leetcode的(或者直接换掉现在英文的链接?),因为我觉得pdf已经是中文的,如果不是面外企,题目看中文的可能效率会高点。

贪心 2.3区间问题 的 435 题目中sort第三个参数“ [](vector a, vector b” 测试点58会显示超时,而换成官方解答的“[](const auto& u, const auto& v” 就能通过 作者可以修改下 顺便告诉一下原因吗 谢谢啦
可能你下载的PDF版本不是最新的,最新的版本里有&。[](vector &a, vector &b)

贪心 2.3区间问题 的 435 题目中sort第三个参数“ [](vector a, vector b” 测试点58会显示超时,而换成官方解答的“[](const auto& u, const auto& v” 就能通过 作者可以修改下 顺便告诉一下原因吗 谢谢啦

因为传引用比传值要快

commented

感谢作者编撰这样一本能够帮助建立系统框架的书!在看到11.5 优先队列的部分时,对用数组实现堆的这部分代码产生了疑问:您前文说到,“用数组表示时,位置 i 的节点的父节点位置一定为 i/2,而它的两个子节点的位置又一定分别为 2i 和 2i+1”,所以这里的数组索引应该是从1开始,这样索引2和3分别代表根节点的两个子节点,但是在返回根节点的top函数中,又用的是“return heap[0];”,即数组索引0代表根节点,如果是从0开始,那么其子节点应该是2i+1和2i+2,但是又和后文的下沉上浮函数冲突了。因此不知道您这部分的实现是考虑根节点从0还是1开始的呢?或者不知道是我的理解哪里出现了问题,期待解惑!谢谢!

感谢作者编撰这样一本能够帮助建立系统框架的书!在看到11.5 优先队列的部分时,对用数组实现堆的这部分代码产生了疑问:您前文说到,“用数组表示时,位置 i 的节点的父节点位置一定为 i/2,而它的两个子节点的位置又一定分别为 2i 和 2i+1”,所以这里的数组索引应该是从1开始,这样索引2和3分别代表根节点的两个子节点,但是在返回根节点的top函数中,又用的是“return heap[0];”,即数组索引0代表根节点,如果是从0开始,那么其子节点应该是2i+1和2i+2,但是又和后文的下沉上浮函数冲突了。因此不知道您这部分的实现是考虑根节点从0还是1开始的呢?或者不知道是我的理解哪里出现了问题,期待解惑!谢谢!

确实是我表述有误,有两种方法:
(1)将第0位设成invalid,第一位当作最大值
(2)仍然将第0位当作最大值,i的子节点为2i+1和2i+2,父节点为(i-1)/2

pdf稍后会更正

那个有一个小小的建议,可不可以就是像代码随想录一样就是有个侧边栏目录这样,我更喜欢这样读电子书,很容易掌握自己的进度

P30回溯法题46的题解中,第二句,“为了防止我们每此遍历时...“,每此写错了,应该是每次。

感谢作者的整理,最近在按照书中顺序在刷题。想问一下书中的练习会有code的答案吗?感觉作者的答案比较好,想要改进一下我写的。谢谢!

感谢作者的整理,最近在按照书中顺序在刷题。想问一下书中的练习会有code的答案吗?感觉作者的答案比较好,想要改进一下我写的。谢谢!

因为有一些问题是需要会员才可以看的,如果我提供答案会有版权问题,所以不能上传,不好意思啦。

感谢作者的整理,最近在按照书中顺序在刷题。想问一下书中的练习会有code的答案吗?感觉作者的答案比较好,想要改进一下我写的。谢谢!

因为有一些问题是需要会员才可以看的,如果我提供答案会有版权问题,所以不能上传,不好意思啦。

或者作者说下您在LeetCode的账户名,我们看看您账户里有没有想要的答案也可以

88. 合并两个有序数组
没有考虑第一个数组元素数为0的情况

88. 合并两个有序数组 没有考虑第一个数组元素数为0的情况

您可以看一下题目的example 3,长度为0的数组会有一个0的假占位

动态规划章节中的口诀,困惑了我很久:

0-1 背包对物品的迭代放在外层,里层的体积或价值逆向遍历;完全背包对物品的迭代放在里层,外层的体积或价值正向遍历。

而上面完全背包的空间压缩版,对物品的迭代似乎放在外层:

int knapsack(vector<int> weights, vector<int> values, int N, int W) {
    vector<int> dp(W + 1, 0);
    for (int i = 1; i <= N; ++i) {
        int w = weights[i-1], v = values[i-1];
        for (int j = w; j <= W; ++j) {
            dp[j] = max(dp[j], dp[j-w] + v);
        }
    }
    return dp[W];
}
commented

感谢老师!大三的时候准备实习用这本但是后来保研去了就没刷多少,现在研究生了还是想用这本书。市面上其他leetcode的书看了基本感觉老师写的排版和解法都更清楚一点,换电脑本来找不到了(因为忘了名字),搜了半天终于找到了。谢谢老师。

谢谢你的leetcode题解。我的算法功底不是很好,想通过这本书练习,加深对算法的理解,然后通过面试找个工作。不知道您是否觉得可行,有什么好的建议吗?十分感谢!