各类算法的一个例子

用算法实现一个正整数的分解质因数。如90=2*3*3*5。

解:

1、用该正整数除以除数(初始值为2)后跳到2;

2、如果能整除且结果不等于1则跳到3,如果不能整除则除数+1后跳到1,如果能整除且结果为1则跳到4;

3、该正整数等于自身除以除数,且记录下当前除数后跳到1;

4、输出之前记录的除数即可。

 

 一串首尾相连的珠子共m个,其中有n中颜色,求出包含全部这n种颜色的最短的串。

解:

两个指针,一个指向头,一个指向尾

从任意一个珠子开始,将头指针指向开始的地方,尾指针往后找,直到找到所有颜色为止。开一个长度为n的数组,在找的过程中记录颜色i最迟出现的位置。找到第一个满足所有颜

色的串之后,头指针移动,去掉开头的珠子,判断目前头尾指针所包含的珠子是否拥有n种颜色就用刚才开的那个数组判断。如果头指针需要去掉一个后面没有的颜色的珠子,那么

需要尾指针向后移动,直到找到这个颜色为止。这样,当头指针走过一圈之后,各种符合n种颜色的串长度可以通过比较记录下最小值了。

 

求一棵2叉数的高度。

解:

用递归解决。递归函数:如果为空则返回0,非则返回左右子树中较高的结果。最后结果+1。

待续... 

转载于:https://www.cnblogs.com/dixonyy/p/3573088.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值