劍指offer牛客網練習20200126

2021-10-02 09:14:48 字數 1436 閱讀 3183

1.順時針列印矩陣

這是我第一次的思路,說實話沒懂自己為啥不能用,說是語法錯誤和陣列越界?

大致的思路是一次遞迴減少外面的一圈,然後把減少完的陣列投入下一次遞迴= =,【【】】和【】我都測試過了是ok的

我發現了這個**的錯誤,在於沒有考慮【】這種情況,會存在多次遍歷的問題

# -*- coding:utf-8 -*-

import numpy as np

class solution:

# matrix型別為二維列表,需要返回列表

def printmatrix(self, matrix):

# write code here

matrix=np.array(matrix)

result=

self.printshun(matrix,result)

return result

def printshun(matrix,result):

# print("*")

for i in range(0,len(matrix[0])):

print(matrix[0][i])

# print("*")

for i in range(1,len(matrix)):

print(matrix[i][len(matrix[0])-1])

i=len(matrix[0])-2

# print("*")

while i>=0:

print(matrix[len(matrix)-1][i])

i=i-1

# print("*")

i=len(matrix)-2

while i>0:

print(matrix[i][0])

i=i-1

if len(matrix)>1:

self.printshun(matrix[1:len(matrix)-1,1:len(matrix[0])-1],result)

看了討論區的

感覺自己又成為了渣渣

這裡要注意的是【【】,【】,【】】的bool是true,而【】即前面的a[0]是false因此

class solution:

def printmatrix(self, matrix):

res =

while matrix:

res += matrix.pop(0)

if matrix and matrix[0]:

for row in matrix:

if matrix:

res += matrix.pop()[::-1]

if matrix and matrix[0]:

for row in matrix[::-1]:

return res

牛客網 劍指Offer 索引

二維陣列中的查詢 替換空格 從尾到頭列印鍊錶 重建二叉樹 用兩個棧實現佇列 旋轉陣列的最小數字 斐波那契數列 跳台階 跳台階 矩形覆蓋 二進位制中1的個數 數值的整數次方 調整陣列順序使奇數字於偶數前面 鍊錶中倒數第k個結點 反轉鍊錶 合併兩個排序的鍊錶 樹的子結構 二叉樹的映象 順時針列印矩陣 包...

牛客網 劍指Offer 索引

二維陣列中的查詢 替換空格 從尾到頭列印鍊錶 重建二叉樹 用兩個棧實現佇列 旋轉陣列的最小數字 斐波那契數列 跳台階 跳台階 矩形覆蓋 二進位制中1的個數 數值的整數次方 調整陣列順序使奇數字於偶數前面 鍊錶中倒數第k個結點 反轉鍊錶 合併兩個排序的鍊錶 樹的子結構 二叉樹的映象 順時針列印矩陣 包...

牛客網 劍指offer 遞迴 (1)

出現的問題 原因 返回值沒有考慮到所有情況 輸入引數n是乙個整數,自己只考慮n 0,n 1,n 2,n 39的情況,一直報錯。改正方案 加上else,判斷其他情況均輸出0,編譯通過 菲波那切數列數列有很多變形的問題 問題1 兔子問題 題目描述 已知一對兔子每乙個月可以生一對小兔子,而一對兔子出生後....