最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java實現轉圈打印矩陣算法

 更新時間:2019年03月02日 11:16:13   作者:梅森上校  
這篇文章主要為大家詳細介紹了java實現轉圈打印矩陣算法,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了java實現轉圈打印矩陣的具體代碼,供大家參考,具體內容如下

給定一個整形矩陣Matrix,請按照順時針方向轉圈的方式,輸入(打?。┰刂怠?

例如:

1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16

輸出結果為:1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10

要求:額外空間復雜度為O(1)

JAVA代碼如下:

package com.bean.algorithmexec;

public class MatrixDemo {

 /*
  * 給定一個整形矩陣Matrix,請按照順時針方向轉圈的方式,輸入(打?。┰刂怠?
  * 例如:
  * 1 2 3 4
  * 5 6 7 8
  * 9 10 11 12
  * 13 14 15 16
  * 輸出結果為:1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10
  * 
  * 要求:額外空間復雜度為O(1)
  * */

 public static void main(String[] args) {
  // TODO Auto-generated method stub

  //初始化一個 4*4的整形矩陣,從第一行第一列從左向右,第二行,第三行,直到第四行依次賦值 1,2,...16.
  int[][] matrixDemo=new int[4][4];
  matrixDemo=createMatrix();
  printMatrix(matrixDemo);

  //轉圈打印
  spiralOrderPrint(matrixDemo);

 }

 private static int[][] createMatrix() {
  // TODO Auto-generated method stub
  int matrix[][]=new int[4][4];
  int k=1;
  for(int i=0;i<4;i++) {
   for(int j=0;j<4;j++) {
    matrix[i][j]=k;
    k++;
   }
  }

  return matrix;
 }

 //順序打印矩陣元素
 private static void printMatrix(int[][] matrix) {
  for(int i=0;i<4;i++) {
   for(int j=0;j<4;j++) {
    System.out.print(matrix[i][j]+"\t");
   }
   System.out.println();
  }

 }

 //轉圈打印
 private static void spiralOrderPrint(int[][] matrix) {
  int tR=0;
  int tC=0;
  int dR=matrix.length-1;
  int dC=matrix[0].length-1;
  while(tR<=dR && tC<=dC) {
   printEdge(matrix, tR++, tC++, dR--,dC--);
  }
 }

 private static void printEdge(int[][] matrix, int tR, int tC, int dR, int dC) {
  // TODO Auto-generated method stub
  if(tR==dR) {
   //子矩陣只有一行時
   for(int i=tC;i<=dC;i++) {
   System.out.print(matrix[tR][i]+" ");
   }

  }else if(tC==dC) {
   //子矩陣只有一列時
   for(int i=tR;i<=dR;i++){
    System.out.print(matrix[i][tC]+" ");
   }

  }else {
   //一般情況
   int curC=tC;
   int curR=tR;
   while(curC!= dC) {
    System.out.print(matrix[tR][curC]+" ");
    curC++;
   }

   while(curR!= dR) {
    System.out.print(matrix[curR][dC]+" ");
    curR++;
   }

   while(curC!= tC) {
    System.out.print(matrix[dR][curC]+" ");
    curC--;
   }

   while(curR!= tR) {
    System.out.print(matrix[curR][tC]+" ");
    curR--;
   }
  }
 }


}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 基于Java解決華為機試實現整數與IP地址間的轉換?

    基于Java解決華為機試實現整數與IP地址間的轉換?

    這篇文章主要介紹了基于Java解決華為機試實現整數與IP地址間的轉換,文章舉例說明圍繞文章主題展開相關內容,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-02-02
  • Java基于logback?MessageConverter實現日志脫敏方案分析

    Java基于logback?MessageConverter實現日志脫敏方案分析

    本文介紹了一種日志脫敏方案,即基于logbackMessageConverter和正則匹配的方法,該方法的優(yōu)點是侵入性低,工作量少,只需修改xml配置文件,適用于老項目,感興趣的朋友跟隨小編一起看看吧
    2024-10-10
  • java獲取文件擴展名的方法小結【正則與字符串截取】

    java獲取文件擴展名的方法小結【正則與字符串截取】

    這篇文章主要介紹了java獲取文件擴展名的方法,結合實例形式分析了使用正則與字符串截取兩種獲取擴展名的操作技巧,需要的朋友可以參考下
    2017-01-01
  • SpringRetry重試機制之@Retryable注解與重試策略詳解

    SpringRetry重試機制之@Retryable注解與重試策略詳解

    本文將詳細介紹SpringRetry的重試機制,特別是@Retryable注解的使用及各種重試策略的配置,幫助開發(fā)者構建更加健壯的應用程序,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • springMarchal集成xStream的完整示例代碼

    springMarchal集成xStream的完整示例代碼

    這篇文章主要介紹了springMarchal集成xStream的示例代碼,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • Spring Boot 與 Kotlin 使用Redis數據庫的配置方法

    Spring Boot 與 Kotlin 使用Redis數據庫的配置方法

    Redis是目前業(yè)界使用最廣泛的內存數據存儲。下面通過本文給大家介紹Spring Boot 與 Kotlin 使用Redis數據庫的配置方法,感興趣的朋友一起看看吧
    2018-01-01
  • SpringBoot整合Zookeeper詳細教程

    SpringBoot整合Zookeeper詳細教程

    Curator是Netflix公司開源的?套zookeeper客戶端框架,Curator是對Zookeeper?持最好的客戶端框架。Curator封裝了?部分Zookeeper的功能,?如Leader選舉、分布式鎖等,減少了技術?員在使?Zookeeper時的底層細節(jié)開發(fā)?作
    2022-12-12
  • Spring Boot Actuator未授權訪問漏洞的問題解決

    Spring Boot Actuator未授權訪問漏洞的問題解決

    Spring Boot Actuator 端點的未授權訪問漏洞是一個安全性問題,可能會導致未經授權的用戶訪問敏感的應用程序信息,本文就來介紹一下解決方法,感興趣的可以了解一下
    2023-09-09
  • springBoot整合Eureka啟動失敗的解決方案

    springBoot整合Eureka啟動失敗的解決方案

    這篇文章主要介紹了springBoot整合Eureka啟動失敗的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • springboot通過注解、接口創(chuàng)建定時任務詳解

    springboot通過注解、接口創(chuàng)建定時任務詳解

    使用SpringBoot創(chuàng)建定時任務其實是挺簡單的,這篇文章主要給大家介紹了關于springboot如何通過注解、接口創(chuàng)建這兩種方法實現定時任務的相關資料,需要的朋友可以參考下
    2021-07-07

最新評論

曲阜市| 定南县| 抚远县| 南澳县| 西吉县| 昔阳县| 图木舒克市| 鹿邑县| 黄梅县| 福泉市| 西吉县| 广昌县| 读书| 隆尧县| 象山县| 普洱| 长汀县| 大宁县| 朝阳市| 荃湾区| 温州市| 黄平县| 新宁县| 饶平县| 义乌市| 石棉县| 任丘市| 莆田市| 华阴市| 敖汉旗| 方城县| 曲阜市| 望江县| 团风县| 天柱县| 高阳县| 嘉定区| 荆州市| 澄迈县| 错那县| 江城|