changgyhub / leetcode_101 Goto Github PK
View Code? Open in Web Editor NEWLeetCode 101:和你一起你轻松刷题(C++)
Home Page: https://www.changgy.com/leetcode-101
LeetCode 101:和你一起你轻松刷题(C++)
Home Page: https://www.changgy.com/leetcode-101
以样例 [1,2,3]为例,输出数组的顺序为[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,2,1],[3,1,2]];而非[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
delete
感谢作者。尤其是使用了
ElegantBook提供的精美LATEX模版
几年前我看到这个模板,我就一直想用这个模板排版点内容啥的,做做笔记之类的,不过一直没有合适的内容。
现在看到作者的成品,就像cuda程序员还顺手写了opencl实现一样,让我觉得非常高兴。
但是把pdf这种二进制文件用git管理确实不太方便啊。正好tex用法也可以理解为编译,pdf是编译出的二进制文件,那么放在release环节更加自然。
一点小小的优化建议:因为买入和卖出需要两天完成,所以只要k>=(days/2)就应该可以认为是unlimited的了。
Hi,
thank you for your book. your code is clean and clear,
I am reading it and find minWindow seems wrong.
BR
算法思路对着,但是为考虑k=0时的情况,LeetCode中存在k=0的的检测点。
首先感谢作者,然后建议代码中变量名l和r使用left和right替换,l和1不太好区分,看久了会比较累。
能麻烦作者整一个网盘下载么,github中的下载网址总是加载错误,谢谢了
First I want to say this is an excellent job! Thank you for sharing this!
At page 16, for question 34. Find First and Last Position of Element in Sorted Array (Medium)
, the function lower_bound
below
may have a bug:
int lower_bound(vector<int> &nums, int target) {
int l = 0, r = nums.size(), mid;
while (l < r) {
mid = (l + r) / 2; // Here, may be overflow when r = MAX_INT and l= MAX_INT/2
if (nums[mid] >= target) {
r = mid;
} else {
l = mid + 1;
}
}
return l;
}
mid = (l + r) / 2;
This code may be overflow when r = MAX_INT and l= MAX_INT/2, you should use mid = (r-l)/2+l
instead.
Also the same for the upper_bound
function.
leetcode上的303题目已经和书上的不一样了。
“判断这个值是否存在于这个为旋转数组中。”
是不是应该把 "为" 字去掉?
(虽然问题不大
这个问题可能不值得开issue,它就是一个关于书名的小疑问:
为什么不叫”....和你一起轻松刷题“,而是”和你一起你轻松刷题“(有点别扭)呢?
刚下载打开看的时候,还以为下到了”二次排版“的盗版PDF。
When I compiled the code using -std=c++11, I got the following error:
error: use of class template 'hash' requires template arguments
return hash(obj, hash_table.size());
I'm thinking there would be an implicit type casting involved in the myhash's call to hash. Would that be the problem?
Btw, I really admire your work and it has helped me a ton!
单独开一贴征集一些意见吧。
=================
笔者自Waymo入职已一年有余,闲来重看此书,忽觉代码风格实在不够标准严谨。如果有空会按照Google Code Style重写一遍代码。
近来实在没有太多空闲时间,有时想写点别的书却抽不出时间。工作后确实很难在完成工作内容、锻炼身体、玩游戏之外再有余力。如果有长假期,可能考虑稍微写一些关于无人车的内容吧,在不泄露任何公司机密的情况下给各位读者介绍一下行业的现状。
另外如果你在读完此书后顺利通过面试而入职,又恰好在硅谷,请备注私信我,我请你吃炸鸡。
作者你好, 首先非常感谢您分享的letcode101,让我获益匪浅.
但是其中有一个解让我不是很明白,希望指点一下,
关于二分查找 P15 第一种方法, 我有些疑问
实际上如果a = 8的时候, while是个死循环,
因为此时mid = 4, 无论 right-1或者left-1 都是3, 然鹅
mid = left + (right - 1) / 2;
让下一个mid又是4...如此循环往复.....
次数 | right | left | mid | sqrt |
---|---|---|---|---|
1 | 1 | 8 | 4 | 0 |
2 | 1 | 3 | 2 | 2 |
3 | 3 | 3 | 4 | 4 |
4 | 3 | 3 | 4 | 2 |
5 | 3 | 3 | 4 | 2 |
... |
我的代码如下
class Solution {
public int mySqrt(int a) {
if(a == 0) return a;
int left = 1, right = a, mid, sqrt;
while(left <= right){
mid = left + (right - 1) / 2;
sqrt = a / mid;
if(sqrt == mid){
return mid;
}else if(mid > sqrt){
right = mid - 1;
}else{
left = mid + 1;
}
}
return right;
}
希望大佬指点一下我哪里做错了...非常感谢!!!
RT, 119页,437题的难度现在是mid。
您好,在P56的322题中,我觉得结果的最大可取值应该为amount,也就是全部都用面额为1的硬币,所以dp的初始值应该可以为amount+1,(当然amount+2也可以~)。或者说这里还有其他需要考虑的地方,导致只能取amount+2?谢谢。
在P50给出的更新例子中,对于每轮的更新查找情况:
当num为5时,dp数组是否应该更新为[2,5],而不是[2],抑或是我理解错误了?谢谢。
It's a DP problem.
第二重循环的轮数如果是sqrt(i)而不是h=sqrt(n)应该会快一些,觉得取h=sqrt(n)有点奇怪,当然也是可以AC的。或者第二重循环判断条件改为j*j<=i也行。
由朋友圈 改为 省份数量
(不过题目意思还是相同的)
感谢作者!非常赞的题解!不知道作者有没有Python Version的计划?
请问制作一本这样的pdf书是用什么排版的
在背包问题中的注意段落 最后一句写 “完全背包对物品的迭代放在里层,外层的体积或价值正向遍历。” 作者的code写的也是外层是物品的贴袋 内层是体积或者价值, 不知道是我理解错了还是这里没写清楚,请指正。
谢谢分享这本书给大家。
作者您好 我是今天刚看到这本书 觉得写的很好 就是一开始第一题的时候 讲满足条件的饼干和孩子 我觉得[1,1] [2,2]这两个组和是不是也应该加进去 因为题目说的不是大于等于
在您的书 P26/143的上半页写到: "一种是先判定是否越界,只有在合法的情况下才进行下一步搜索(即判断放在调用 递归函数前)", 对应的代码为:
// 主函数
int maxAreaOfIsland(vector<vector<int>>& grid) {
if (grid.empty() || grid[0].empty()) return 0;
int max_area = 0;
for (int i = 0; i < grid.size(); ++i) {
for (int j = 0; j < grid[0].size(); ++j) {
if (grid[i][j] == 1) {
max_area = max(max_area, dfs(grid, i, j));
}
} }
return max_area;
}
// 辅函数
int dfs(vector<vector<int>>& grid, int r, int c) {
if (grid[r][c] == 0) return 0;
grid[r][c] = 0;
int x, y, area = 1;
for (int i = 0; i < 4; ++i) {
x = r + direction[i], y = c + direction[i+1];
if (x >= 0 && x < grid.size() && y >= 0 && y < grid[0].size()) {
area += dfs(grid, x, y);
}
}
return area;
}
由于在主函数中已经进行了 if (grid[i][j] == 1)
判断才能进入递归,所以我之前想,在helper函数中第一行if (grid[r][c] == 0) return 0;
是否多余,删除之后提交出现StackOverflow的问题。
这里就不是很理解了,如果是主函数中先判断,通过条件之后才递归,为什么在helper函数中仍然需要判断?(如果是不管三七二十一搜索,那么helper中肯定需要判断,这个好理解)
希望您这里能够做出详细一点的解释。我想应该不止我一个有这个问题
如果测试用例是这个的话 [1,2,87,87,87,2,1] 好像跑不过?
page17
4.4旋转数组查找数字
81. Search in Rotated Sorted Array (Medium)给出的解析中,mid取值方法 int mid = (start + end) /2;可能会造成溢出,可以更改为int mid = left + ((right-left)>>1);
您好,我有一点疑问想请教一下。
在N皇后问题的题解中,您表示有对角线的方法为rdiag[row+i+1], row范围为[0,n-1] i范围为[0,n-1]。
但是rdiag初始化为2*n-1大小的vector。假设n=3,那么row+i+1最大可能为5,而rdiag大小为5,最大下标只有4。
所以是否存在数组下标越界的可能呢?(但是我复制您的代码到leetcode却也能AC)
按我的理解应该是rdiag[row+i]。
个人觉得14.3中对二叉查找树的文字定义存在错误
样例如下
[1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1]
2
可以在二分while下, 使用 while的形式, 左移和右移过滤掉相同的数字
事实上, 该题复杂度是O(n)的话, for循环可能更好一点, 二分太折磨人了
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.