问题:

段位:4

说明:

对一个输入二维数组,进行蜗牛型的回旋遍历,然后输出遍历后的一维数组。

array = [[1,2,3], [4,5,6], [7,8,9]]  进行回旋遍历之后 array => [1,2,3,6,9,8,7,4,5]

输入范围:

考虑数组为空

输入案例:

// 也就是上图举例
array = [[1,2,3],[4,5,6],[7,8,9]]
snail(array) #=> [1,2,3,6,9,8,7,4,5]

我的代码:

比较随性的代码,自由发挥弄出来了跑了2kms

public class SnailSort {public static void main(String[] args) {int[][] arr = new int[][]{{1,2,3}, {4,5,6}, {7,8,9}};int[] res = Snail.snail(arr);for(int i : res) System.out.print(i + ",");}static class Snail {public static int[] snail(int[][] array) {// enjoyif(array == null || array.length == 0 || array[0].length == 0) return new int[0];// 返回结果存放int[] res = new int[array.length * array[0].length];int end = 0;// 用上下左右四个夹逼处理int top = 0;int bottom = array.length;int left = 0;int right = array[0].length;// 方向参数int dir = 0;// 进行夹逼判断while(top <= bottom && left <= right) {// 处理方向dir %= 4;if(dir == 0) {for(int i = left;i < right;i ++) {res[end ++] = array[top][i];}top ++;} else if(dir == 1) {for(int i = top;i < bottom;i ++) {res[end ++] = array[i][right - 1];}right --;} else if(dir == 2) {for(int i = right - 1;i >= left;i --) {res[end ++] = array[bottom - 1][i];}bottom --;} else {for(int i = bottom - 1;i >= top;i --) {res[end ++] = array[i][left];}left ++;}dir ++;}return res;}}
}

其它代码:

得分最高的一个,暂时没看

public class Snail {public static int[] snail(int[][] array) {if (array[0].length == 0) return new int[0];int n = array.length;int[] answer = new int[n*n];int index=0;for (int i = 0; i<n/2; i++){for (int j = i; j < n-i; j++) answer[index++] = array[i][j];for (int j = i+1; j < n-i; j++) answer[index++] = array[j][n-i-1];for (int j = i+1; j < n-i; j++) answer[index++] = array[n-i-1][n-j-1];for (int j = i+1; j < n-i-1; j++) answer[index++] = array[n-j-1][i];}if (n%2 != 0) answer[index++] = array[n/2][n/2];return answer;}
}

[Codewar练习-java]Snail Sort(蜗牛型排序)相关推荐

  1. list快速默认排序java_1. java Collections.sort()实现List排序的默认方法和自定义方法...

    1.java提供的默认list排序方法 主要代码: List list = new ArrayList();list.add("刘媛媛"); list.add("王硕&q ...

  2. java collections.sort 忽略大小写排序_Java Spring Mongo排序忽略大小写问题

    我正在使用Spring-Data-mongodb对MongoDB执行各种请求. 尝试执行分页&时用忽略的情况排序我得到一个例外, 这是我的代码: Sort.Order order = new ...

  3. java 默认排序方式_Java Collections.sort()实现List排序的默认方法和自定义方法

    1.java提供的默认list排序方法 主要代码: list list = new arraylist();list.add("刘媛媛"); list.add("王硕&q ...

  4. [Java基础] sort方法--------排序的那些事

    引言 在学习Java过程中,排序sort是我们常用的功能:在Java里,数组有Arrays.sort()可以排序,集合则是Collections.sort()方法排序:默认情况下是升序排列,但是降序又 ...

  5. java arrays.sort() c_5.4 (Java学习笔记)集合的排序(Collections.sort(),及Arrays.sort())...

    1.Comparable接口 这个接口顾名思义就是用于排序的,如果要对某些对象进行排序,那么该对象所在的类必须实现 Comparabld接口.Comparable接口只有一个方法CompareTo() ...

  6. [CodeForces 892A] Greed (Java中sort实现从大到小排序)

    题目链接:http://codeforces.com/problemset/problem/892/A 具体的Java 中 sort实现降序排序:https://www.cnblogs.com/you ...

  7. Java中sort实现降序排序

    Java中sort实现降序排序 利用Collections的reverseOrder方法: import java.util.Arrays; import java.util.Collections; ...

  8. 详述Java中sort排序函数

    文章目录 前言 升序排序 降序排序 排序原理 前言 手写一个排序算法的效率是很慢的,当然这也不利于我们在比赛或者工程中的实战,如今几乎每个语言的标准库中都有排序算法,今天让我来给大家讲解一下Java语 ...

  9. Java sort()与稳定排序

    Java sort()与稳定排序 首先由博文 JAVA里sort()方法的使用与原理解析的结论如下: sort()是根据需要排序的数组的长度进行区分的: 首先先判断需要排序的数据量是否大于60. 小于 ...

最新文章

  1. video 微信 标签层级过高_基于大数据的用户标签体系建设思路和应用
  2. Delphi 2010 secondsBetween Bug
  3. 我的第一个 JSP (SSH) 个人网站【开源】
  4. [转] 为什么javascript是单线程的却能让AJAX异步调用?
  5. Codeforces Round #281 (Div. 2) C. Vasya and Basketball 二分
  6. 下一代对话系统中的关键技术(上篇)
  7. @scheduled注解配置时间_SpringBoot2.0实战(32)配置定时任务
  8. art-template入门(三)之语法
  9. php实现中间件6,说一说ThinkPHP6中五花八门的中间件_PHP开发框架教程
  10. LFS-构建自己的linux
  11. 汇编语言---计算有符号数算式的值
  12. css实现两端对齐的3种方法
  13. 远程Service(AIDL)的简单使用
  14. getCacheDir()和getFilesDir()方法区别
  15. oracle桌面工具plsql连接本地远程数据库
  16. 【图像配准】基于matlab GUI SIFT图像配准拼接【含Matlab源码 854期】
  17. 03C++语言对C的增强——实用性、变量检测、struct类型、C++中所有变量和函数都必须有类型、bool类型、三目运算符...
  18. keeplive发生脑裂问题处理过程
  19. web前端学习(总结/心得)
  20. java经典算法(六)---zws

热门文章

  1. java后台如何给数据给前端_JAVA后台 关于如何从后台传递信息在jsp前端页面显示...
  2. 一张表带你了解S3系列接触式芯片卡读写器的差异
  3. 台式计算机一小时功率,电脑电源功率如何选?电脑1小时能耗多少电?
  4. 用python实现随机选人、选取活动或节目小程序
  5. 最全的正则表达式大全,手机号、邮箱等等
  6. 详解Python中的File(文件)操作
  7. 解决Dmaven.multiModuleProjectDirectory system propery is not set. Check M2_HOME错误
  8. 2020个人网站搭建指南(华为云+wordpress)
  9. 如何使用 DOI 快速找到论文的全文下载网址
  10. 2021virtualbox中Ubuntu16.04:开发环境配置,更换源