螺旋矩阵(python版本)
螺旋矩阵
http://www.nowcoder.com/questionTerminal/7edf70f2d29c4b599693dc3aaeea1d31
啊,好吧,我菜,写了一天多一点写完这题
这个算是我的草稿,里面还有我把过去的代码注释掉的部分
是我的求错的历程
将这个代码复制到pycharm是可以良好运行的,我已经测试了3*3 , 4*4, 5*5的矩阵了,后面的部分应该也是可以运行的
啊,菜鸡有点开心,写出来一道题真的是不错的
另外,突然感觉写代码会上瘾,这个,有点难办哈哈哈哈,每天如果这道题写不出来的话,会想着把这道题写出来
向着高手的道路继续前进,菜鸡的我继续努力哈哈哈哈
emmmm,顺带提,牛客的编译器不知道为啥没法运行,求大神解惑,我还没搞懂牛客编译器的原理,网页编译器和pycharm有什么不同呢?
好吧,后来我发现为什么牛客编译器过不了了,牛客编译器有大概50个测试样例,各种各样的,而题目本来是MxN的,我写的是NxN的,继续优化吧我
#
#
# @param matrix int整型二维数组
# @return int整型一维数组
#
class Solution:
def spiralOrder(self , matrix ):
# write code here
self.matrix = matrix
self.count_result = []
self.length_heng = len(self.matrix)
#print("heng:",self.length_heng)
self.zi_matrix = self.matrix[0]
self.length_lie = len(self.zi_matrix)
#print("lie",self.length_lie)
self.zuizhongshuchuliebiao = []
shu1 = self.length_heng
shu2 = self.length_lie
chushishu = 0
i = 0
j = 0
count = 0
for q in range(self.length_heng * self.length_lie):
if j < shu2 - 1 and i == chushishu:
#print(self.matrix[i][j])
self.zuizhongshuchuliebiao.append(self.matrix[i][j])
#print("xiangyou")
j = j + 1
elif j == shu2 - 1 and i < shu1 - 1:
#print(self.matrix[i][j])
self.zuizhongshuchuliebiao.append(self.matrix[i][j])
#print("xiangxia2")
i = i + 1
elif i == shu1 - 1 and j > chushishu:
#print(self.matrix[i][j])
self.zuizhongshuchuliebiao.append(self.matrix[i][j])
#print("xiangzuo")
j = j - 1
elif j == chushishu and i > chushishu:
#print(self.matrix[i][j])
self.zuizhongshuchuliebiao.append(self.matrix[i][j])
#print("xiangshang")
i = i - 1
if i == j == chushishu :#and chushishu == 0:
i += 1
j += 1
#print('ci shi de i',i)
#print("ci shi de j",j)
chushishu += 1
shu1 = shu1 - 1
shu2 = shu2 - 1
#print("ci shi de shu 1",shu1)
#print("ci shi de shu 2",shu2)
#print("di{},lun kai shi",chushishu)
if i == j == chushishu == (shu1 - 1) == (shu2 - 1):
#print(self.matrix[i][j])
self.zuizhongshuchuliebiao.append(self.matrix[i][j])
#print("zhongdian")
break
def result_print(self):
print(self.zuizhongshuchuliebiao)
#
# elif j == shu2 - 1 and i == chushishu:
# if i < shu1 - 1 and j == shu2 - 1:
# print(self.matrix[i][j])
# print("xiangxia")
# i = i + 1
# elif i == shu1 - 1 and j > chushishu:
# print(self.matrix[i][j])
# print("xiangzuo1")
# j = j - 1
# #j = j - 1
#
# # if j != chushishu and i == shu1 - 1:
# # print(self.matrix[i][j])
# # print("jixuxiangzuo")
# # j = j - 1
# # #if i != 0:
# # i = i - 1
# if j == chushishu and i != chushishu:
# print(self.matrix[i][j])
# print("xiangshang")
# i = i - 1
# # if i != chushishu + 1 and j == chushishu:
# #
# # print(self.matrix[i][j])
# # i = i - 1
# # print("jixuxiangshang")
# # print("ci shi de i:",i)
# # print("ci shi de j:",j)
# '''
# if i <= chushishu + 1:
# i = chushishu + 1
# print("hou lai de i:", i)
# #chushishu += 1
#
# shu1 = shu1 - 2
# print("ci shi shu1:",shu1)
#
# shu2 = shu2 - 2
# print("ci shi shu2:", shu2)
#
# if shu1-1 < chushishu:
# shu1 = chushishu + 1
# print("shu1 wei 1 le")
# if shu2-1 < chushishu:
# shu2 = chushishu + 1
# print("shu2 wei 1 le")
#
# #j = j + 1
#
# #print("hou lai de j:",j)
# if j <= chushishu + 1:
# j = chushishu + 1
# print("hou lai de j:", j)
# chushishu += 1
#
# '''
#
#
# if i == chushishu +1 and j == chushishu:
# print(self.matrix[i][j])
# j= j + 1
# chushishu += 1
# shu1 = shu1 - 2
# shu2 = shu2 - 2
# #if i == j == shu1 == shu2:
# #print("zhongdian:", self.matrix[i][j])
# if i == shu1 - 1 and j == shu2 - 1:
# print(self.matrix[i][j])
#
# count += 1
# if count == self.length_heng * self.length_lie:
# print("dao dian:")
# break
# print("lie:", self.length_lie)
# print("heng:", self.length_heng)
# ru guo zhi you yi ge biao ji wei, er wai mian na ge shi wei le suan lun ci de
# zzheyang yi ge da quan jiu nong wan le
# xun huan da quan wan hou ,mou ge s*** xing bian xiao
# kan kan bian xiao de gui lv shi shen me
a = input()
b = eval(a)
solu = Solution()
solu.spiralOrder(b)
solu.result_print()
#
# @param matrix int整型二维数组
# @return int整型一维数组
#
class Solution:
def spiralOrder(self , matrix ):
# write code here
self.matrix = matrix
self.count_result = []
self.length_heng = len(self.matrix)
#print("heng:",self.length_heng)
self.zi_matrix = self.matrix[0]
self.length_lie = len(self.zi_matrix)
#print("lie",self.length_lie)
self.zuizhongshuchuliebiao = []
shu1 = self.length_heng
shu2 = self.length_lie
chushishu = 0
i = 0
j = 0
count = 0
for q in range(self.length_heng * self.length_lie):
if j < shu2 - 1 and i == chushishu:
#print(self.matrix[i][j])
self.zuizhongshuchuliebiao.append(self.matrix[i][j])
#print("xiangyou")
j = j + 1
elif j == shu2 - 1 and i < shu1 - 1:
#print(self.matrix[i][j])
self.zuizhongshuchuliebiao.append(self.matrix[i][j])
#print("xiangxia2")
i = i + 1
elif i == shu1 - 1 and j > chushishu:
#print(self.matrix[i][j])
self.zuizhongshuchuliebiao.append(self.matrix[i][j])
#print("xiangzuo")
j = j - 1
elif j == chushishu and i > chushishu:
#print(self.matrix[i][j])
self.zuizhongshuchuliebiao.append(self.matrix[i][j])
#print("xiangshang")
i = i - 1
if i == j == chushishu :#and chushishu == 0:
i += 1
j += 1
#print('ci shi de i',i)
#print("ci shi de j",j)
chushishu += 1
shu1 = shu1 - 1
shu2 = shu2 - 1
#print("ci shi de shu 1",shu1)
#print("ci shi de shu 2",shu2)
#print("di{},lun kai shi",chushishu)
if i == j == chushishu == (shu1 - 1) == (shu2 - 1):
#print(self.matrix[i][j])
self.zuizhongshuchuliebiao.append(self.matrix[i][j])
#print("zhongdian")
break
def result_print(self):
print(self.zuizhongshuchuliebiao)
#
# elif j == shu2 - 1 and i == chushishu:
# if i < shu1 - 1 and j == shu2 - 1:
# print(self.matrix[i][j])
# print("xiangxia")
# i = i + 1
# elif i == shu1 - 1 and j > chushishu:
# print(self.matrix[i][j])
# print("xiangzuo1")
# j = j - 1
# #j = j - 1
#
# # if j != chushishu and i == shu1 - 1:
# # print(self.matrix[i][j])
# # print("jixuxiangzuo")
# # j = j - 1
# # #if i != 0:
# # i = i - 1
# if j == chushishu and i != chushishu:
# print(self.matrix[i][j])
# print("xiangshang")
# i = i - 1
# # if i != chushishu + 1 and j == chushishu:
# #
# # print(self.matrix[i][j])
# # i = i - 1
# # print("jixuxiangshang")
# # print("ci shi de i:",i)
# # print("ci shi de j:",j)
# '''
# if i <= chushishu + 1:
# i = chushishu + 1
# print("hou lai de i:", i)
# #chushishu += 1
#
# shu1 = shu1 - 2
# print("ci shi shu1:",shu1)
#
# shu2 = shu2 - 2
# print("ci shi shu2:", shu2)
#
# if shu1-1 < chushishu:
# shu1 = chushishu + 1
# print("shu1 wei 1 le")
# if shu2-1 < chushishu:
# shu2 = chushishu + 1
# print("shu2 wei 1 le")
#
# #j = j + 1
#
# #print("hou lai de j:",j)
# if j <= chushishu + 1:
# j = chushishu + 1
# print("hou lai de j:", j)
# chushishu += 1
#
# '''
#
#
# if i == chushishu +1 and j == chushishu:
# print(self.matrix[i][j])
# j= j + 1
# chushishu += 1
# shu1 = shu1 - 2
# shu2 = shu2 - 2
# #if i == j == shu1 == shu2:
# #print("zhongdian:", self.matrix[i][j])
# if i == shu1 - 1 and j == shu2 - 1:
# print(self.matrix[i][j])
#
# count += 1
# if count == self.length_heng * self.length_lie:
# print("dao dian:")
# break
# print("lie:", self.length_lie)
# print("heng:", self.length_heng)
# ru guo zhi you yi ge biao ji wei, er wai mian na ge shi wei le suan lun ci de
# zzheyang yi ge da quan jiu nong wan le
# xun huan da quan wan hou ,mou ge s*** xing bian xiao
# kan kan bian xiao de gui lv shi shen me
a = input()
b = eval(a)
solu = Solution()
solu.spiralOrder(b)
solu.result_print()