数据结构
捏捏觉少
T大在读
展开
-
单链表反转-原地算法
最先想到的思路是仅遍历一遍单链表,在遍历的过程中修改指针使得目标节点的next节点指向之前的节点。为了简便我们可以首先考虑普遍(遍历在链表中部)的情况,我们有三个节点h(head),p,t(tmp),如下图所示。具体的步骤已经在图中给出,此时的局面是h已然指向前驱节点,接下来只需要把p的next指向h即可。反转的操作在步骤2,步骤3、4为了套娃。特殊的情况(遍历在第一个节点)h是没有前驱节...原创 2020-02-27 16:42:06 · 692 阅读 · 0 评论 -
统计二进制整数1的个数-loglogn算法
该算法在邓书解析[1-12]已经给出,解释虽然详细,但仍需要细心体会才能理解其中奥妙,本篇仅为辅助理解原作。给出源代码:round函数的输入必须是以2^c 为组,各组数值代表2^c 位中1的数目。突破口在于任何整数的二进制天然地以1bit分组每组值代表了“1”的个数。比如(5)b=0 1 0 1 。有了这个前提,一开始就可以放心地开始第一轮的round。注意掩码(mask)以当前每组数...原创 2020-02-27 02:19:47 · 1207 阅读 · 0 评论 -
TsinghuaOj Programming Assignment #3.3 重名剔除(Deduplicate)
TsinghuaOj Programming Assignment #3.3 重名剔除(Deduplicate)重名剔除(Deduplicate)DescriptionMr. Epicure is compiling an encyclopedia of food. He had collected a long list of candidates nominated by several...原创 2018-11-14 02:25:38 · 1449 阅读 · 0 评论