多路合并

2016年3月29日

多路合并采用两个或多个排序的输入列表,并创建一个输出列表,其中包含按排序顺序排列的各种输入列表的所有元素。

如果只有两个输入列表,这很容易;按顺序运行列表,在每一步将列表头部的两个元素中较小的一个移动到输出。

如果有,事情会变得更困难k个具有的输入列表k个> 2. 最简单的方法是合并前两个列表,然后将其与第三个列表合并,依此类推,执行k个−1次合并。

“锦标赛”方法首先成对合并输入列表,形成一组新的k个/2列出每个列表的长度是原始列表的两倍,然后递归。因此,输入列表1和2被合并,然后3和4被合并,依此类推,然后合并列表1/2和合并列表3/4被合并,以此类推,直到最后只剩下一个合并列表。

最好的方法是根据最小元素将所有输入列表排列在优先级队列中。在每个步骤中,优先级队列头部的元素都会写入输出,该元素将从优先级队列头部列表中删除,并对优先级队列进行改革,以将新的最小元素置于其头部。

您的任务是编写上述三个版本的多路合并。完成后,欢迎您阅读运行建议的解决方案,或在下面的评论中发布自己的解决方案或讨论练习。

页:1 2

左侧键盘

2016年3月25日

几天前,当一个程序调用左侧衬垫它通过在字符串左侧添加空格或其他字符来将字符串填充到给定长度,但突然从其存储库中删除。整个插曲都很悲伤,给所有参与其中的人都带来了耻辱(尽管所有参与进来的人似乎都认为自己自始至终表现良好),所有被破坏的网站都是由傻瓜创建的(你不要依靠未知的第三方在互联网上的某个未知位置维护对应用程序至关重要的代码)。您可以阅读更多有关这些链接中发生的事情的信息:对发生的事情有很好的概述,阿泽尔的声明,NPM声明、和讽刺。导致问题的代码如下所示:

module.exports=左键盘;函数左键区(str,len,ch){str=字符串(str);var i=-1;如果(!ch&&ch!==0)ch='';len=len-str.length;while(++i<len){str=ch+str;}返回str;}

您的任务是编写正确版本的左键盘; 确保您的操作是线性时间,而不是Azer代码中字符串串联导致的二次时间。完成后,欢迎您阅读运行建议的解决方案,或在下面的评论中发布自己的解决方案或讨论练习。

页:1 2

三个家庭作业问题

2016年3月22日

我在休斯顿看望了我的女儿后回到了家。我跟踪的入门编程论坛,以及我收到的电子邮件(我无法想象有人给我发了一封电子邮件,告诉我我必须为他们做编程作业,他脑子里想的是什么)表明,我们正处于这个学期的这一部分,入门程序员必须编写他们的第一个程序。因此,今天我们有三个初学者需要编写的家庭作业类型的程序:

  1. 编写一个程序来计算数组中整数的和。
  2. 编写一个反转数组元素的程序。
  3. 编写一个程序,使用插入排序对整数数组进行排序。

你的任务是通过编写上述三个程序来帮助读者完成作业。完成后,欢迎您阅读运行建议的解决方案,或在下面的评论中发布自己的解决方案或讨论练习。

页:1 2

上一次练习我们研究了一个简单的编程问题:确定一组不同重量的童子军所需的独木舟数量,每个独木舟可以容纳两个男孩。今天,我们将这个问题扩展到三个男孩的情况,或者更广泛地说,n个男孩们。

你的任务是修改你之前的解决方案,以处理三个男孩的案件;如果你雄心勃勃,就处理好n个男孩们。没有建议的解决方案,因为我正在休斯顿度假看望我的女儿,没有时间写一个。请随时在下面的评论中发布您的解决方案或讨论练习。

我们今天有一个来自谷歌的采访问题:

一群童子军正在乘独木舟旅行,需要确定要租多少独木舟。一条独木舟可以载一两个男孩,总重量为150磅。给出一份男孩的体重清单,需要多少条独木舟?

你的任务是编写一个程序,确定如何需要独木舟。完成后,欢迎您阅读运行建议的解决方案,或在下面的评论中发布自己的解决方案或讨论练习。

页:1 2

字符串前缀

2016年3月8日

两个字符串有一个共同的前缀,该前缀由相同字符串中最长的前缀组成。例如,字符串“I love cats”和“I loves dogs”有共同的前缀“I love[我爱]”(包括love末尾的一个空格,这在某些浏览器中不会正确显示)。

您的任务是编写一个程序,查找字符串列表(可能不止两个字符串)的公共前缀。完成后,欢迎您阅读运行建议的解决方案,或在下面的评论中发布自己的解决方案或讨论练习。

页:1 2

波形分类

2016年3月4日

如果替代项大于其最近邻项(因此其他替代项小于其最近邻),则整数列表将按“波形”顺序排序。因此,列表[4 1 7 5 6 2 3]是按波形排列的,因为4>1,然后1<7,然后7>5,然后5<6,然后6>2,最后2<3。注意,两个交替流[4 7 6 3]和[1 5 2]本身不需要排序。第一个项目是波浪之间的高浪还是低谷并不重要,尽管从波浪开始是传统的。

您的任务是编写一个程序,该程序获取唯一整数列表并将其按波形顺序排序。完成后,欢迎您阅读运行建议的解决方案,或在下面的评论中发布自己的解决方案或讨论练习。

页:1 2

3的权力

2016年3月1日

3的幂是30= 1, 31= 3, 32= 9, 3=27,依此类推。

你的任务是编写一个程序,确定一个数字是否是3的幂;你必须给出多个解决方案。完成后,欢迎您阅读运行建议的解决方案,或在下面的评论中发布自己的解决方案或讨论练习。

页:1 2