soulmachine / acm-cheat-sheet Goto Github PK
View Code? Open in Web Editor NEWAcm Cheat Sheet
Acm Cheat Sheet
看到README里面写着有PDF,但是没找到地方下载,有点闹心。。
编译成PDF后,PDF中的中文,无论是正文还似乎代码中的中文,复制到记事本中是乱码。
这样会导致读者想要复制粘贴代码时,会出现乱码,就需要手动敲代码,或者到github repo的latex源代码里复制粘贴代码,很麻烦。
是否可以把需要的字体重传一下,或者直接给出列表?
只有我注意到了三个一模一样写成了一摸一样么_(:зゝ∠)_
动态规划那不是memorization, 是memoization。刘汝佳说过,这俩词挺容易混的。
why
第k小数这一页的第一段代码测试出错了:
A = [9, 4, 1, 6, 7, 3, 8, 2, 5]
select(A, 0, len(A) - 1, 5)
Expected:5
Output:6
P19. KMP算法的均摊复杂度应该做不到N/M吧?是否是子行划错了
92页, 归并排序
出现了连续两行
/* 数组元素的类型/
typedef int elem_t;
merge函数中第一个循环 for(i = 0...) 应该是 for(i = start...)
基数排序, 应该提供给用户统一的接口, 即void Sort(int A[], int len)
96页中的 a[0].link = current = front[j]; 应改为 a[0].link = front[j];
getDigit中的10应该改为R
第四页strstr第一个for循环的继续条件应该是 _p1_advance && *p 否则会访问越界. 此外, 第二个for里的while不必判断_p1因为p1不会越过p1_advance.
我原先的Leet Code代码
class Solution {
public:
char *strStr(char *haystack, char *needle) {
while(true){
char *p = haystack, *q = needle;
while(*p && *q && *p == *q){
p++; q++;
}
if(!*q){
return haystack;
}else if(*p){
haystack++;
}else{
return NULL;
}
}
}
};
看了你的代码后借鉴着写了:
class Solution {
public:
char *strStr(char *haystack, char *needle) {
if(!haystack || !needle) return NULL;
if(!*needle) return haystack;
char *p = haystack, *pEnd = haystack, *q = needle + 1;
while(*pEnd && *q){ pEnd++; q++; }
while(*pEnd){
p = haystack, q = needle;
while(*q && *p == *q){ p++; q++; }
if(!*q) return haystack;
haystack++;
pEnd++;
}
return NULL;
}
};
顺便问一下, 有什么快捷方法把我贴上去的代码直接转成"代码样式"嘛? 我是每行行首手动复制了四个空格...有些麻烦
看着好像是一样的。
int next_permutation(int num[], int len) {
int i = len - 2; // partition number's index
while (i >= 0 && num[i] >= num[i + 1]) i--;
if(i == -1) return 0;
if (i >= 0) {
int j = len - 1; // change number's index
while (num[j] <= num[i]) --j;
swap(num, i, j); reverse(num, i + 1, len);
} else {
reverse(num, i + 1, len);
}
return 1;
这段代码中if(i == -1) return 0;应该去掉吧
如果为-1应该对整个数组逆序,而不是返回.否则最后面的else子句根本不会执行
求确认
在vscode docker 的环境下编译的,间隔比较窄,有missfont.log,大佬看看是什么问题?
missfont.log
mktextfm AdobeSongStd-Light/OT
mktextfm AdobeSongStd-Light/OT
mktextfm AdobeKaitiStd-Regular/OT
mktextfm AdobeKaitiStd-Regular/B/OT
mktextfm AdobeSongStd-Light/OT
mktextfm AdobeSongStd-Light/BI/OT
mktextfm AdobeSongStd-Light/OT
mktextfm AdobeSongStd-Light/OT
mktextfm AdobeKaitiStd-Regular/OT
mktextfm AdobeKaitiStd-Regular/OT
mktextfm AdobeSongStd-Light/OT
mktextfm AdobeSongStd-Light/OT
这个问题的代码是生成全排列的代码,并不是生成可重集的排列的代码。并且pdf中给出的条件有一个笔误,条件应该是if(i==0 || S[i] != S[i-1]),而不是if(i==0 && S[i] != S[i-1])。在你的代码上我的实现:https://gist.github.com/ningyuwhut/8594296
每到题的解法都很短,没有必要考虑名称空间冲突,直接使用using namespace std
即可。std::
前缀徒增篇幅和代码噪音。
mktextfm AdobeSongStd-Light/OT
mktextfm AdobeSongStd-Light/OT
mktextfm AdobeKaitiStd-Regular/OT
mktextfm AdobeKaitiStd-Regular/B/OT
mktextfm AdobeHeitiStd-Regular/OT
mktextfm AdobeHeitiStd-Regular/I/OT
mktextfm AdobeSongStd-Light/OT
mktextfm AdobeSongStd-Light/BI/OT
mktextfm AdobeSongStd-Light/OT
mktextfm AdobeSongStd-Light/OT
mktextfm AdobeHeitiStd-Regular/OT
mktextfm AdobeHeitiStd-Regular/OT
mktextfm AdobeKaitiStd-Regular/OT
mktextfm AdobeKaitiStd-Regular/OT
这个LaTex模板总共使用了10个字体,下载地址 https://pan.baidu.com/s/1eRFJXnW ,这个链接失效了,里面什么也没有。
I know the fonts might be already settled as the same as those used in a nicely published book. But, the codes fonts are not very reader-friendly. May I suggest changing to another font family? Top-10 List
btw, it seems that the comments in side some codes are not well organized. Sometimes, single line comment is mixed with multiple line comment.
For example: eight_digits_bfs.c
/**
* @strut 状态
*/
typedef struct state_t {
int8_t data[DIGITS]; /** 状态的数据. */
int action; /* 由父状态移动到本状态的动作 */
int father; /* 父状态在 nodes[] 中的下标,也即父状态的哈希值 */
int count; /** 所花费的步骤数(也即路径长度-1) */
} state_t;
// 3x3 的棋盘,状态最多有 9! 种
#define STATE_MAX 362880 /* 状态总数 */
/********** functions implement **************/
/********** 方案 1,完美哈希,使用康托展开 **************/
// 9 位变进制数(空格)能表示 0 到 (9!-1) 内的所有自然数, 恰好有 9! 个,
// 与状态一一对应,因此可以把状态一一映射到一个 9 位变进制数
// 9 位变进制数,每个位数的单位,0!~8!
const int fac[] = {40320, 5040, 720, 120, 24, 6, 2, 1, 1};
/* 哈希表容量,要大于状态总数,若存在完美哈希方案,则等于状态总数 */
#define HASH_CAPACITY STATE_MAX
Best regards,
Thanks
目前本书中的插图,是直接从其他书中截图或网上搜索的,一是模糊,二是有版权问题。
因此,本书需要将所有插图用开源工具重新绘制。
目前考虑的工具有 Tikz, Graphviz, gpic, gnuplot。
Tikz是一个LaTeX宏包,专门用来画图,非常强大,可以看看这里的例子,非常炫。
Graphviz适合绘制依赖关系图、简单的class继承关系图等。
gpic 适合绘制线框图,例如数据结构。gpic可参考Brian W. Kernighan的《PIC—A Graphics Language for Typeseing, User Manual》和Eric S.Raymond的《Making Pictures with GNU PIC》。缺点:无法输入中文。
Gnuplot 适合绘制数据密集型的统计图,如直方图,饼状图等。
heap_sort中调用heap_create创建一个heap然后又将heap->elems指向数组a, 可是heap_create里面已经分配了elems的内存, 这样将导致heap_create里面分配的elems内存悬空, 导致内存泄露.
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.