【题目】
Given a matrix ofmxnelements (mrows,ncolumns), return all elements of the matrix in spiral order.
For example,
Given the following matrix:
[
[ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ]
]
You should return[1,2,3,6,9,8,7,4,5]
.
【分析】
无
【代码】
/**------------------------------------
* 日期:2015-02-05
* 作者:SJF0115
* 题目: 54.Spiral Matrix
* 网址:https://oj.leetcode.com/problems/spiral-matrix/
* 结果:AC
* 来源:LeetCode
* 博客:
---------------------------------------**/
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
class Solution {
public:
vector<int> spiralOrder(vector<vector<int> > &matrix) {
vector<int> result;
if(matrix.empty()){
return result;
}//if
int row = matrix.size();
int col = matrix[0].size();
int count = row * col;
int index = 1;
int beginX = 0,endX = row - 1;
int beginY = 0,endY = col - 1;
while(index <= count){
// right
for(int i = beginY;i <= endY;++i){
result.push_back(matrix[beginX][i]);
++index;
}//for
++beginX;
if(beginX > endX){
break;
}//if
// down
for(int i = beginX;i <= endX;++i){
result.push_back(matrix[i][endY]);
++index;
}//for
--endY;
if(endY < beginY){
break;
}//if
// left
for(int i = endY;i >= beginY;--i){
result.push_back(matrix[endX][i]);
++index;
}//for
--endX;
if(endX < beginX){
break;
}//if
// up
for(int i = endX;i >= beginX;--i){
result.push_back(matrix[i][beginY]);
++index;
}
++beginY;
if(beginX > endY){
break;
}//if
}//while
return result;
}
};
int main(){
Solution s;
vector<vector<int> > matrix = {{1,2,3},{4,5,6},{7,8,9}};
vector<int> result = s.spiralOrder(matrix);
// 输出
for(int i = 0;i < result.size();++i){
cout<<result[i]<<" ";
}//for
cout<<endl;
return 0;
}
分享到:
相关推荐
# [LeetCode](https://leetcode.com/problemset/algorithms/) ![Language](https://img.shields.io/badge/language-Python%20%2F%20C++%2011-orange.svg) [![License]...
leetcode 答案螺旋矩阵 返回二维数组中整数元素的顺时针螺旋列表 [答案击败 100% Java LeetCode 运行时提交] [答案击败 100% Java LeetCode 内存使用提交] 大(O)= O(N)
这是我准备面试时建议的个人问题清单。...https://leetcode.com/problems/spiral-matrix/ https://leetcode.com/problems/search-a-2d-matrix/ https://leetcode.com/problems/set-matrix-zeroes/ 弦乐 ...
Spiral Matrix com.leetcode.list Linked List Cycle Linked List Cycle II Remove Duplicates from Sorted List com.leetcode.string Single Number com.leetcode.tree Balanced Binary Tree Maximum Depth of ...
leetcode 530 力码 全部的: 易(173/237+x) 中(144/437+x) 硬(4/x) 问题 1.Two Sum(dict) 7.(跳过)(数学) 9.(跳过)(串串技巧) 11.盛水最多的容器 12.(跳过)(问题不好) 13.(跳过)(蛮力) 14.(跳过)...
leetcode LeetCode Solutions 算法 - Algorithms 排序算法:快速排序、归并排序、计数排序 搜索算法:回溯、递归、剪枝技巧 图论:最短路、最小生成树、网络流建模 动态规划:背包问题、最长子序列、计数问题 基础...
leetcode category other hot keywords:Palindrome(mic), Subsequence Array 螺旋矩阵Spiral Matrix 顺时针打印矩阵 Next Permutation Product of Array Except Self 189.rotate-array 283.move-zero Range Sum ...
多线程 leetcode 前言 ...Spiral Matrix Path Sum II Copy List with Random Pointer Building H2O Fizz Buzz Multithreaded hard Merge k Sorted Lists Reverse Nodes in k-Group Trapping Rain Water
Spiral Matrix medium O 66 Plus One easy O O 118 Pascal's Triangle easy O O 119 Pascal's Triangle II easy O 要满足只用一个array大小空间O(k) k为input大小来完成,须具备backtracking概念 151 Reverse Words ...
第 338 章leetcode_cpp leetcode 的 C++ 代码 包含的问题 1 两和容易2 加两个数中5 最长回文子串中6 ZigZag 转换介质7 反转整数简单8 ...Spiral Matrix II 培养基61 轮播列表中第62话第63话64 最小路径和中66
对于每一道算法题会总结代码、时间复杂度以及一些好的blog排序(sort)数组(array)LintCode 373 Partition Array by Odd and EvenLintCode 144 Interleaving Positive and Negative NumbersLeetCode 54 Spiral ...
java lru leetcode LeetCode 记录数据结构与算法/LeetCode练习过程,将...Spiral Matrix Mergesort [Algorithm Swap](Mergesort/Algorithm swap.md) Numbers Queue Stack Toposort Trie Tree Two Pointers Union Find
def spiralOrder(self, matrix: List[List[int]]) -> List[int]: if not matrix:return [] m,n = len(matrix),len(matrix[0]) x = y = di = 0 dx = [0,1,0,-1] dy = [1,0,-1,0] res = [] visite
Spiral Matrix II ZigZag Conversion Divide Two Integers Text Justification Max Points on a Line Community QQ 群: 237669375 Github: https://www.github.com/soulmachine/algorithm-essentials 微博: @...