PrintTest &&mergeTest

Stella981
• 阅读 371
import java.util.Random;

/**
 * Created by Administrator on 2017/9/16.
 */
public class PrintTest {


    static int M,N;
    static int MN[][] ;

    public void print(int startX,int startY){

        int col = startY ;
        int row = startX;

        int rowLength = M - (startY)*2;
        int colLength = N - (startX)*2;

        for(int i= col;i<N-startX;i++){
            System.out.print(MN[row][i]+" ");
            col =i;
        }
        row ++ ;

        if(rowLength ==1){
            return;
        }

        for(int i= row ;i<M-startY;i++){
            System.out.print(MN[i][col]+" ");
            row = i;
        }
        col--;

        if(colLength ==1){
            return;
        }

        for (int i = col; i >= startY; i--) {
            System.out.print(MN[row][i] + " ");
            col = i;
        }
        row--;

        for(int i= row ;i>startX;i--){
            System.out.print(MN[i][col]+" ");
            row = i;
        }
        col ++;

        if(rowLength >2 && colLength >2){ //数组已不可再分解
            print(row,col);
        }
    }

    public void start() {
        print(0,0);
    }

    public void ready(){
        if(M < 1 || N <1)
            return;

        MN = new int[M][N];
        Random random = new Random();
        for(int i=0;i<M;i++){
          for(int j=0;j<N;j++){
                int value = random.nextInt(10);
                MN[i][j] = value;
                System.out.print(value+" ");
          }
          System.out.println("");
        }

        System.out.println("print:");
        start();
        System.out.println("");
        System.out.println("--------------------------");

    }

    public static  void main(String args[]){
        PrintTest test =  new PrintTest();
        PrintTest.M = 5;
        PrintTest.N = 1;
        test.ready();

        PrintTest.M = 1;
        PrintTest.N = 5;
        test.ready();

        PrintTest.M = 2;
        PrintTest.N = 5;
        test.ready();

        PrintTest.M = 5;
        PrintTest.N = 2;
        test.ready();

        PrintTest.M = 3;
        PrintTest.N = 3;
        test.ready();

        PrintTest.M = 6;
        PrintTest.N = 6;
        test.ready();


        PrintTest.M = 3;
        PrintTest.N = 6;
        test.ready();

    }
}





import java.util.Arrays;
import java.util.Random;

/**
 * Created by Administrator on 2017/9/16.
 */
public class MergeTest {

    static class  Node{
        public Node next;
        public int value;
        Node(int v){
            this.value = v;
        }
    }

     Node mergeLink;//new sort  link
     Node currentNode; //link current


     Node generate(int length){
        Random random = new Random();
        Node[] nodes = new Node[length];
        for(int i= 0;i < nodes.length;i++) {
            nodes[i] = new Node(random.nextInt(20));
        }
        Arrays.sort(nodes,(o1,o2)-> o1.value - o2.value);

        for(int i= 0;i < nodes.length-1;i++){
            Node currentNode = nodes[i];
            Node nextNode = nodes[i+1];
            currentNode.next = nextNode;
        }
        return nodes[0];
    }

     void sortedMerge(Node nodeA,Node nodeB){
        while (nodeA != null && nodeB != null){
            while (nodeB != null){
                Node nextNode ;
                boolean isNextA = false;
                if(nodeA.value > nodeB.value){ //A > B
                    nextNode = new Node(nodeB.value);
                    nodeB = nodeB.next;
                }else{ //A <=B
                    nextNode = new Node(nodeA.value);
                    nodeA = nodeA.next;
                    isNextA = true;
                }
                appendLink(nextNode);
                if(isNextA){
                    break;
                }
            }
        }

        if(nodeA != null){
            appendLink(nodeA);
        }

        if(nodeB != null){
            appendLink(nodeB);
        }


    }

      void appendLink(Node nextNode){
        if(mergeLink == null){
            mergeLink = nextNode;
        }else if(mergeLink.next == null){
            currentNode = nextNode;
            mergeLink.next = currentNode;
        } else {
            currentNode.next = nextNode;
            currentNode = nextNode;
        }
    }

    public static  void main(String args[]){
        MergeTest test = new MergeTest();
        Node nodeA = test.generate(7);
        Node nodeB = test.generate(7);
        print("nodeA",nodeA);
        print("nodeB",nodeB);
        test.sortedMerge(nodeA,nodeB);
        print("mergeNode",test.mergeLink);
    }

     static  void print(String tip,Node node){
        System.out.print(tip+":");
         int size = 0;
        while (node != null){
            System.out.print(node.value+" ");
            node = node.next;
            size++;
        }
        System.out.println(" size :"+size);
    }
}
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Stella981 Stella981
3年前
Android So动态加载 优雅实现与原理分析
背景:漫品Android客户端集成适配转换功能(基于目标识别(So库35M)和人脸识别库(5M)),导致apk体积50M左右,为优化客户端体验,决定实现So文件动态加载.!(https://oscimg.oschina.net/oscnet/00d1ff90e4b34869664fef59e3ec3fdd20b.png)点击上方“蓝字”关注我
Stella981 Stella981
3年前
Python之time模块的时间戳、时间字符串格式化与转换
Python处理时间和时间戳的内置模块就有time,和datetime两个,本文先说time模块。关于时间戳的几个概念时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量。时间元组(struct_time),包含9个元素。 time.struct_time(tm_y
Stella981 Stella981
3年前
IE7、IE8、IE9对min
问题:    IE7、IE8、IE9对minheight不识别,其他无问题解决:   box{width:100px;height:35px;}   htmlbodybox{width:auto;height:auto;width:100px;minheight:35px;} 实例:
Wesley13 Wesley13
3年前
PHP创建多级树型结构
<!lang:php<?php$areaarray(array('id'1,'pid'0,'name''中国'),array('id'5,'pid'0,'name''美国'),array('id'2,'pid'1,'name''吉林'),array('id'4,'pid'2,'n
Wesley13 Wesley13
3年前
35岁是技术人的天花板吗?
35岁是技术人的天花板吗?我非常不认同“35岁现象”,人类没有那么脆弱,人类的智力不会说是35岁之后就停止发展,更不是说35岁之后就没有机会了。马云35岁还在教书,任正非35岁还在工厂上班。为什么技术人员到35岁就应该退役了呢?所以35岁根本就不是一个问题,我今年已经37岁了,我发现我才刚刚找到自己的节奏,刚刚上路。
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这