欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java實(shí)現(xiàn)轉(zhuǎn)圈打印矩陣算法

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

本文實(shí)例為大家分享了java實(shí)現(xiàn)轉(zhuǎn)圈打印矩陣的具體代碼,供大家參考,具體內(nèi)容如下

給定一個(gè)整形矩陣Matrix,請(qǐng)按照順時(shí)針方向轉(zhuǎn)圈的方式,輸入(打印)元素值。

例如:

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

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

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

JAVA代碼如下:

package com.bean.algorithmexec;

public class MatrixDemo {

 /*
  * 給定一個(gè)整形矩陣Matrix,請(qǐng)按照順時(shí)針方向轉(zhuǎn)圈的方式,輸入(打印)元素值。
  * 例如:
  * 1 2 3 4
  * 5 6 7 8
  * 9 10 11 12
  * 13 14 15 16
  * 輸出結(jié)果為:1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10
  * 
  * 要求:額外空間復(fù)雜度為O(1)
  * */

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

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

  //轉(zhuǎn)圈打印
  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();
  }

 }

 //轉(zhuǎn)圈打印
 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) {
   //子矩陣只有一行時(shí)
   for(int i=tC;i<=dC;i++) {
   System.out.print(matrix[tR][i]+" ");
   }

  }else if(tC==dC) {
   //子矩陣只有一列時(shí)
   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--;
   }
  }
 }


}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 200行Java代碼編寫一個(gè)計(jì)算器程序

    200行Java代碼編寫一個(gè)計(jì)算器程序

    本篇文章給大家分享的只用200行java代碼,實(shí)現(xiàn)一個(gè)計(jì)算器程序,不僅能夠計(jì)算加減乘除,還能夠匹配小括號(hào)。實(shí)現(xiàn)代碼超簡(jiǎn)單,需要的朋友參考下吧
    2017-12-12
  • Java設(shè)計(jì)模式中單一職責(zé)原則詳解

    Java設(shè)計(jì)模式中單一職責(zé)原則詳解

    這篇文章主要介紹了Java設(shè)計(jì)模式中單一職責(zé)原則詳解,單一職責(zé)原則 (SRP) 是軟件設(shè)計(jì)中的一個(gè)重要原則,它要求每個(gè)類只負(fù)責(zé)一個(gè)職責(zé),需要的朋友可以參考下
    2023-05-05
  • 詳談Java靜態(tài)動(dòng)態(tài)的問題

    詳談Java靜態(tài)動(dòng)態(tài)的問題

    下面小編就為大家?guī)?lái)一篇詳談Java靜態(tài)動(dòng)態(tài)的問題。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • Java之Set?交集,差集,并集的用法

    Java之Set?交集,差集,并集的用法

    這篇文章主要介紹了Java之Set?交集,差集,并集的用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • SpringBoot后端數(shù)據(jù)校驗(yàn)實(shí)戰(zhàn)操作指南

    SpringBoot后端數(shù)據(jù)校驗(yàn)實(shí)戰(zhàn)操作指南

    在項(xiàng)?開發(fā)中,對(duì)于前端提交的表單,后臺(tái)接?接收到表單數(shù)據(jù)后,為了保證程序的嚴(yán)謹(jǐn)性,通常后端會(huì)加?業(yè)務(wù)參數(shù)的合法校驗(yàn)操作來(lái)避免程序的?技術(shù)性?bug,這篇文章主要給大家介紹了關(guān)于SpringBoot后端數(shù)據(jù)校驗(yàn)的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • 基于logback 實(shí)現(xiàn)springboot超級(jí)詳細(xì)的日志配置

    基于logback 實(shí)現(xiàn)springboot超級(jí)詳細(xì)的日志配置

    java web 下有好幾種日志框架,比如:logback,log4j,log4j2(slj4f 并不是一種日志框架,它相當(dāng)于定義了規(guī)范,實(shí)現(xiàn)了這個(gè)規(guī)范的日志框架就能夠用 slj4f 調(diào)用)。這篇文章主要介紹了基于logback springboot超級(jí)詳細(xì)的日志配置,需要的朋友可以參考下
    2019-06-06
  • 下一代Eclipse 步入云端

    下一代Eclipse 步入云端

    代號(hào)Che的下一代Eclipse IDE將運(yùn)行在云端,可以在任何機(jī)器上打開瀏覽器寫代碼。項(xiàng)目的建立、編輯、debug、部署可以都在一個(gè)倉(cāng)庫(kù)中進(jìn)行,需要的朋友可以參考下
    2015-12-12
  • SpringBoot2.7.14整合redis7的詳細(xì)過(guò)程

    SpringBoot2.7.14整合redis7的詳細(xì)過(guò)程

    這篇文章主要介紹了SpringBoot2.7.14整合redis7的詳細(xì)過(guò)程,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-10-10
  • 深入理解Java 線程池

    深入理解Java 線程池

    這篇文章主要介紹了Java 線程池的相關(guān)資料,文中講解非常細(xì)致,幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • 圖書管理系統(tǒng)java版

    圖書管理系統(tǒng)java版

    這篇文章主要為大家詳細(xì)介紹了java版的圖書管理系統(tǒng),通過(guò)實(shí)例為大家快速掌握數(shù)據(jù)庫(kù)編程技術(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-06-06

最新評(píng)論