算法
伯也
计算机软件开发工程师
展开
-
求子数组的最大和
题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。子数组有起始和结束位置,如果以结束位置为标准,把这个问题划分一下子问题。假设m为数组下标,S(m)表示以m为结束位置的所有子数组和的最大值。遍历数组下标1~n,计算出S(1)…S(n),选择其中最大值就是子数组和的最大值。上述问题转换为求以m为结束位置的所有子数组和的最大值。假设已经得到了S(m),如何计算得到S(m+1)?实际上S(m+1原创 2021-06-11 14:45:00 · 199 阅读 · 1 评论 -
台阶积水
台阶积水有一组不同高度的台阶,由一个整数数组表示,数组中每个数是台阶的高度。当开始下雨了(水足够多),台阶之间的水坑会积多少水?如数组{0,1,0,2,1,0,1,3,2,1,2,1},返回积水量6。原创 2020-06-28 21:06:47 · 3301 阅读 · 0 评论 -
使用链表进行正整数求和
链表求和用单链表表示十进制数,求两个正整数的和,请注意单链表的方向,不允许使用其他数据结构。如下图所示:此题主要考察链表的逆序,算法步骤:将两个链表逆序。遍历两个链表,将相同位上的数字相加,并保存到新的链表中,注意进位。将保存结构的链表逆序。注意:当其中的一个链表遍历完成后,不能简单的将另一个链表的剩余部分复制到结果链表中,需要考虑进位,得到的结果链表有可能比原有的链表长。...原创 2020-06-28 19:25:35 · 638 阅读 · 0 评论 -
给定n个数,输出组合数字中的最大值或最小值
算法题:给定n个数,输出组合数字中的最大值或最小值例如:给定34,567,9,88四个数。这四个数字组合而成的所有数字中,最大数字为98856734,最小数字为34567889。以求最大值为例。组合的数字中位数是相同的,如果需要求得最大值,高位的数字越大越好,所以需要在给定的数字中,选择最高位最大的数字放到最前面。这样得出的数值最高位比其他组合要大。所以比较的标准就是最高位的大小,如果最高位相...原创 2019-06-19 23:43:09 · 4839 阅读 · 1 评论 -
给定n个黑白小球,打印出所有可能的排列
算法: 有两个小球,黑白,分别用1 0表示,传入一个数字n表示有n个小球,请打印出所有可能的排列,附加条件:不能连续出现三个颜色相同的小球。原创 2019-06-23 14:45:37 · 1654 阅读 · 0 评论