2018-04-02

算法分析第九题

数字填空 给定N个不同的整数以及一个包含n个空格的序列,每个空格之间事先给定有不等符号。请设计一个算法,将n个整数填入这n个空格中并满足不等号的约束。

例子:

空格: __ < __ > __ < __ < __
数字原序列:4,6,3,1,8
输入后的序列:1,8,3,4,6


老师课堂上说的的思路:
  • 先排序
  • 将最大值插入到第二个空格中
    排序代码:
        int[] a = {4,6,3,1,8};
        Arrays.sort(a);

插入代码:

        ArrayList<Integer> b = new ArrayList<Integer>();
        b.add(1,a[4]);

整体主要代码如下图:

1.png

输出情况:
1 8 3 4 6

但是!!!

这样的写法,很明显,是在已知了几个<>符号的位置,排列方式下完成的
我们能不能让用户来输入这些坑爹的符号,并且依然输出一个满足条件的序列呢??
of course . 是可以滴:

思路:

  • 依然先完成从小到大的排序
  • 遍历,找“>”符号!!为什么要找它呢,因为它和我们的从小到大的序列冲突!!!
  • 每找到一个> 符号,就把当前最大值插入到它的前面~,这样,不就多了一个数了吗? 没关系,因为我们是从小到大排序好的,直接删除最后一个数就行了~
  • 当前最大值,什么叫当前最大值? 就是说,往前插入过的数,就不再是当前最大值啦~;
  • 遍历一圈过后,新的序列就满足要求啦~输出就行了!

上代码:
2.png


样例输入 :
/> < > >/
样例输出
8 > 1 < 6 > 4 > 3

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 9,951评论 0 5
  • 对于开发人员来说,设计模式有时候就是一道坎,但是设计模式又非常有用,过了这道坎,它可以让你水平提高一个档次。而在a...
    WANKUN阅读 1,891评论 0 2
  • java中static关键字的作用 在Java中static表示“全局”或者“静态”的意思,用来修饰成员变量和成员...
    Lutecium阅读 4,547评论 1 5
  • 上世纪的爱情,是什么样子的呢? 1995年,我的父亲25岁,在市消防支队当参谋。 他觉得自己还年...
    晴o堂阅读 2,635评论 0 0
  • 001 激情会让我们很快的将全身心投入一项任务,可是激情来得迅猛、激烈,去得也快,持续时间非常短暂,等激情消失以后...
    燕归愁阅读 676评论 2 3