算法練習:19.JZ29 順時針打印矩陣

錯誤原因
  • 總體思路有,但不夠清晰,一直在邊調試邊完善。
  • 這方面就養成更好的構思習慣,以及漲漲經驗吧。
分析:
思路:找規律

兩個坑:

  • 一次循環的后半段是倒著遍歷的
  • 是矩陣不是方陣,要考慮行列不同的情況

特殊情況:

  1. 空矩陣
  2. 行向量,列向量

#include <type_traits>
class Solution {public:vector<int> printMatrix(vector<vector<int> > matrix) {vector<int> results;// Step0.特殊情況處理:空矩陣if (matrix.size() < 1) return results;// Step1.計算左上,右上,左下的下標int k = 0;  // 左上角的下標,每次循環后+1int w_last = matrix[0].size() - 1; // 右上角的下標,每次循環后-1int h_last = matrix.size() - 1; // 左下角的下標,每次循環后-1while (k <= h_last && k <= w_last) { // 本次循環的左上角與右上角重合后 or 左上角與左下角重合后// Step1.順序遍歷上面一行for (int j = k; j <= w_last; j++)results.push_back(matrix[k][j]);// Step2.順序遍歷右邊一行for (int i = k + 1; i <= h_last - 1; i++)results.push_back(matrix[i][w_last]);// Step3.逆序遍歷下面一行if (k < h_last) // 跳出條件:左上角與左下角重合(針對矩陣非方陣的情況,包括行向量)for (int j = w_last; j >= k; j--)results.push_back(matrix[h_last][j]);// Step4.逆序遍歷左邊一行if (k < w_last) // 跳出條件:左上角與右上角重合(針對矩陣非方陣的情況,包括列向量)for (int i = h_last - 1; i >= k + 1; i--)results.push_back(matrix[i][k]);k++;w_last--;h_last--;}return results;}
};

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/81722.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/81722.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/81722.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

計算機組成與體系結構:緩存設計概述(Cache Design Overview)

目錄 Block Placement&#xff08;塊放置&#xff09; Block Identification&#xff08;塊識別&#xff09; Block Replacement&#xff08;塊替換&#xff09; Write Strategy&#xff08;寫策略&#xff09; 總結&#xff1a; 高速緩存設計包括四個基礎核心概念&#xf…

Tomcat多應用部署與靜態資源路徑問題全解指南

&#x1f9d1; 博主簡介&#xff1a;CSDN博客專家、CSDN平臺優質創作者&#xff0c;高級開發工程師&#xff0c;數學專業&#xff0c;10年以上C/C, C#, Java等多種編程語言開發經驗&#xff0c;擁有高級工程師證書&#xff1b;擅長C/C、C#等開發語言&#xff0c;熟悉Java常用開…

Python----目標檢測(labelimg和labelme的安裝與使用,Pycharm配置教程)

一、labelimg labelimg是一款開源的圖像標注工具&#xff0c;標簽可用于分類和目標檢測&#xff0c;它是用python寫的&#xff0c;并使用Qt作為其圖形界面&#xff0c;簡單好用&#xff08;雖然是英文版的&#xff09;。其注釋以 PASCAL VOC格式保存為XML文件&#xff0c;這是I…

Vue項目部署服務器

Vue項目部署服務器 目錄 Vue項目部署服務器環境配置nginx開放端口打包vue項目配置nginx 環境 vue 2.6.14 nginx 1.26.0配置nginx 準備一個服務器實例 安裝nginx所需依賴 yum -y install pcre* yum -y install openssl*下載wget yum install wget下載nginx到/usr/local cd…

spring框架中的本地緩存:spring cache基本使用

基本概念及原理 處理邏輯 Spring Cache 是 Spring 提供的一整套的緩存解決方案。 雖然它本身并沒有提供緩存的實現&#xff0c;但是它提供了一整套的接口和代碼規范、配置、注解等&#xff0c;這樣它就可以整合各種緩存方案了 處理邏輯&#xff1a;每次調用某方法&#xff…

AI大模型學習二十四、實踐QEMU-KVM 虛擬化:ubuntu server 25.04 下云鏡像創建Ubuntu 虛擬機

一、說明 雖然說大部分的場合&#xff0c;docker都能解決問題&#xff0c;但是有些大型的軟件安裝時如果修改配置會很麻煩&#xff0c;比方說前面遇到的code-server和dify 默認都是80和443端口要使用&#xff0c;安裝在一起就會端口沖突&#xff0c;通過該端口來解決問題&#…

安卓中0dp和match_parent區別

安卓中的 0dp 和 match_parent 的區別&#xff1f; 第一章 前言 有段時間&#xff0c;看到同事在編寫代碼的時候&#xff0c;寫到的是 0dp 有時候自己寫代碼的時候&#xff0c;編寫的是 match_parent 發現有時候效果很類似。 后來通過一個需求案例&#xff0c;才發現兩者有著…

二十、案例特訓專題3【系統設計篇】web架構設計

一、前言 二、內容提要 三、單機到應用與數據分離 四、集群與負載均衡 五、集群與有狀態無狀態服務 六、ORM 七、數據庫讀寫分離 八、數據庫緩存Memcache與Redis 九、Redis數據分片 哈希分片如果新增分片會很麻煩&#xff0c;需要把之前數據取出來再哈希除模 一致性哈希分片是…

基于Rust語言的Rocket框架和Sqlx庫開發WebAPI項目記錄(一)

前置說明 開發語言&#xff1a;Rust Web框架&#xff1a;Rocket 數據庫&#xff1a;PostgreSQL 開發步驟 新建項目&#xff1a; cargo new projectname 在Cargo.toml文件里配置如下依賴&#xff1a; [dependencies] rocket {version"0.5.0",features["json&qu…

中國城市間交通駕車距離矩陣(2024)

中國城市間交通駕車距離矩陣(2024) 1852 數據簡介 中國城市中心的交通駕車距離&#xff0c;該數據為通過審圖號GS(2024)0650的中國城市地圖得其城市中心距離&#xff0c;再通過高德地圖api計算得出其交通駕車最短距離矩陣&#xff0c;單位為KM&#xff0c;方便大家研究使用。…

MySQL替換瀚高數據庫報錯: TO_DAYS()不存在(APP)

文章目錄 環境癥狀問題原因解決方案報錯編碼 環境 系統平臺&#xff1a;中標麒麟&#xff08;海光&#xff09;7,中標麒麟&#xff08;飛騰&#xff09;7 版本&#xff1a;4.5 癥狀 MySQL替換為瀚高數據庫進行應用系統適配報錯&#xff1a;TO_DAYS&#xff08;&#xff09;不…

驅動-Linux定時-timer_list

了解內核定時相關基礎知識 文章目錄 簡要介紹timer_list 特點API 函數實驗測試程序 - timer_mod.c編譯文件-Makefile實驗驗證 注意事項總結 簡要介紹 硬件為內核提供了一個系統定時器來計算流逝的時間&#xff08;即基于未來時間點的計時方式&#xff0c; 以當前時刻為計時開始…

計算機網絡概要

?絡相關基礎知識 協議 兩設備之間使?光電信號傳輸信息數據 要想傳遞不同信息 那么?者?就需要約定好的數據格式 層 封裝 繼承 多態是計算機的性質 它們?持了軟硬件分層的實現 同層協議可以?接通信 同層協議?不直接通信 是各?調?下層提供的結構能?完成通信 分層…

QT 使用QPdfWriter和QPainter繪制PDF文件

QT如何生產pdf文件&#xff0c;網上有許多文章介紹&#xff0c;我也是看了網上的文章&#xff0c;看他們的代碼&#xff0c;自己琢磨琢磨&#xff0c;才有了本編博客&#xff1b; 其他什么就不詳細說了&#xff0c;本篇博客介紹的QPdfWriter和QPainter繪制PDF文件&#xff1b;…

企業標準信息公共服務平臺已開放標準通編輯器訪問入口

標準通 數字化標準編輯器 專業、高效、便捷 企業標準信息公共服務平臺 近日&#xff0c;企業標準信息公共服務平臺已開放標準通編輯器訪問入口&#xff0c;可進入官網指定版塊使用&#xff01; 核心功能亮點 解決企業痛點 傳統標準編制&#xff0c;需反復核對格式、逐條…

【Hadoop】--HA高可用搭建--3.2.2

修改環境配置文件 hadoop-env.sh # 在文件末尾添加以下內容&#xff1a; # java_home記得修改 export JAVA_HOME/usr/java/jdk1.8.0xxxx export HDFS_NAMENODE_USERroot export HDFS_DATANODE_USERroot export HDFS_ZKFC_USERroot export HDFS_JOURNALNODE_USERroot export YA…

【skywalking】index“:“skywalking_metrics-all“},“status“:404}

skywalking 啟動報錯 java.lang.RuntimeException: {"error":{"root_cause":[{"type":"index_not_found_exception","reason":"no such index [skywalking_metrics-all]","resource.t ype":"inde…

【Android】從垂直同步到屏幕刷新機制(一)

【Android】從垂直同步到屏幕刷新機制 本文參考以及部分圖片來源&#xff1a; 垂直同步_小科普&#xff1a;“垂直同步”究竟是什么&#xff1f;-CSDN博客 “終于懂了” 系列&#xff1a;Android屏幕刷新機制—VSync、Choreographer 全面理解&#xff01;-騰訊云開發者社區-騰訊…

ACL完全解析:從權限管理到網絡安全的核心防線

訪問控制列表&#xff08;ACL&#xff09;是一種用于管理資源訪問權限的核心安全機制&#xff0c;廣泛應用于操作系統和網絡設備中。以下是對ACL的詳細解析&#xff1a; 1. 基本概念 定義&#xff1a;ACL是由多個訪問控制條目&#xff08;ACE&#xff09;組成的列表&#xff0…

代碼審計-php框架開發,實戰tp項目,打擊微交易,源碼獲取,擴大戰果

實戰&#xff0c;不安全寫法引發的注入 這個bc靶場源碼沒有&#xff0c;看老師演示 打開很明顯的tp框架源碼 拿到tp框架之后第一步&#xff0c;搜索版本信息5.0.5 兩個思路 1.代碼的不安全寫法 2.版本自身存在的漏洞 全局搜索where看看也沒有不安全的 哎&#xff1f;&…