在之前的 撸了个LeetCode题解仓库自动生成与发布的工具 中,我提到我撸了个LeetCode题解仓库自动生成与发布的工具。不过,这个工具有个遗憾:代码里的中文注释会显示为乱码。这个问题说小也小,但是,这样一来就不能写中文注释了,有时还是挺不方便的。

这个问题搁置了许久,今天终于想着把这一BUG给解决掉,顺便解决下其它的问题,像减少等待、优化页面等。这里说下代码里的中文乱码的BUG。

也许是为了安全吧,LeetCode在submission详情里将代码中的一些符号使用了其Unicode码进行转换。例如,\n会转为\\u000A>会转为\\u003E等。

阅读全文

二分法的思路比较简单,但往往不容易写对,比如要不要加等号、死循环等问题。实际上,二分法就是一个逐步缩小范围的过程,每次缩小一半。

经典应用

最经典的二分法的应用是:一个有序数组arr(例如升序),数组元素不同,从数组中找数target的索引,如果不存在返回-1。代码比较简单:

阅读全文

计算a的b次方模m:

$$ a^b\ \%\ m $$

暴力的做法是将a乘b次,最后对m取模。不过,这样可能导致溢出,时间复杂度也很高。

现在考虑,求3的10次方,最少需要做几次乘法运算。

阅读全文

引言

有若干节点,并将其中一些节点对进行连接,要判断任意两个节点是否连通(有路径到达,而不要求直接连接),连通后就不会断开连通关系,此时就可以使用并查集。并查集擅长动态维护许多具有传递性的关系,能在无向图中维护节点之间的连通性。

要判断两个节点是否连通,可以把连通的节点加入到各自的集合里,也就是,同一个集合里的节点都是连通的,不同集合里的节点是不连通的。

阅读全文

在使用ArchLinux系的系统(比如我用的Manjaro),使用Deepin桌面时,Office图标会显示为压缩包:

虽然说,docx、xlsx、pptx格式其实也就是zip包,但图标错乱还是会让强迫症的我感觉很难受。不过,在Xfce4桌面环境下是没有这个问题的,Office图标正确显示为Office图标,但Deepin下就有这种问题,有点奇怪。

阅读全文

这两天快速看了下《实战Java高并发程序设计》这本书,对Java高并发程序有一个初步的认识。

这本书是在iPad上用MarginNotes 3看的,只是做了些笔记,还没进行代码实践,后续还需要细化。

阅读全文

题解是交卷后做的,不保证AC。

题目1

题目描述

给出长虔都为n的两个整数数组a[n]和b[n],特殊运算 S = a[0]*b[0] + ... + a[n-1]*b[n-1],你可以改变a数组的顺序使得运算S得到的值最小,给出最终的最小值。
数组长度n大于50,对于每个元素X,0<=X<=100。

阅读全文

N-sum 问题还是比较典型的,这里进行一下小结。

首先描述一下 N-sum 问题:有一个数组 nums,要求从数组中选择 n 个数,使得这些数的和恰好为 target ,输出所有不重复的可行组合。

如果采用暴力解法,显然时间复杂度为 $O(N^n)$,这一般是不可取的。

下面是 N-sum 问题的LeeCode链接:

阅读全文

题目

今天面试时,面试官问了这样一个问题:两个单链表相交,怎么求交点。所谓相交,就是两个节点的next指针相同。

阅读全文

为数组赋初值是很常见的操作,如果不赋初值,默认就是随机值:

int main() {
    int a[5];
    return 0;
}

如果想将a中的元素全部赋为0,第2行可以写为:

int a[5]{0};

阅读全文