牛客初級班 矩陣

2021-09-28 14:23:16 字數 1965 閱讀 4694

此類問題一般是矩陣的花式列印,只要注意不要糾結於位置的變化,巨集觀思考就可以得出簡潔的**

這個問題不要想著索引怎麼變化。

比如列印最外圈一行 到 最右面的列結束,列印最外圈一列到最下面的行結束

所以說只要記錄左上角和右下角兩個點就能控制列印一圈矩陣,不用考慮變化問題了

特殊情況要考慮只有一行和一列的情況

這個題目可以確定乙個對角線然後每次列印對角線上的元素就可以,外部迴圈來控制對角線兩端的元素變化。

上面的元素先往右面跑,跑不動,再跑到下面,左側的元素先往下跑,然後往右跑。

然後布林型別控制從上面往下面列印還是從下面往上面列印

public static void printmatrix(int matrix)

}public static void printlevel(int matrix,int row1,int col1,int row2,int col2,boolean fromlast)

}else}}

public static void main(string args) ,,};

printmatrix(matrix);

}

容易出錯的點

上面的**,在控制對角線的移動時,如果row和col變化的順序不正確的話可能會導致有的地方沒列印到 比如說左側行滿了 但是接下來判斷列了 列增加就會導致 row 2 0這個位置被跳過直接來到 row 2 col 1

如果要遍歷每個元素找到k,時間複雜度為o(n*m)

要利用這個矩陣的性質 排好序 那麼就可以排除一些數,從右上角開始,

如果k比它大那麼就往下找,因為左面都是比它小的元素,如果k比他小就開始往左找

這樣最大複雜度為o(n+m)

public class findnuminsortedmatrix else if(k

}return false;

}public static void main(string args) ,// 0

,// 1

,// 2

,// 3

,// 4

,// 5

,// 6

// 7

};int k = 21;

system.out.println(iskinmatrix(matrix,k));}}

左神初級班 (二)

實現一種狗貓佇列的結構,要求如下 使用者可以呼叫add方法將cat類或dog類的例項放入佇列中 使用者可以呼叫pollall方法,將佇列中所有的例項按照進佇列的先後順序依次彈出 使用者可以呼叫polldog方法,將佇列中dog類的例項按照進佇列的先後順序依次彈出 使用者可以呼叫pollcat方法,將...

Vim 編輯器 初級班

本文約定 vim 表示在 shell 下輸入 vim 大寫字母如 a 表示鍵入shift a g 表示 ctrl g x 表示在命令模式鍵入 冒號 與x 普通命令如 i 都是在命令模式鍵入直接響應 幫助 help 幫助我還不大會使用,以後補上 命令模式與插入模式 vim 剛開啟時處於命令模式,此時任...

如何選擇北京市醫療定點機構 初級班

前一段時間,因為上醫療保險,選了半天醫療定點機構,有些小小心得,拿出來分享一下。大家要拋玉不要拍磚哦。一共要選6所定點醫院,主要指導原則如下 1.就近原則 要選離自己家和自己單位近的醫院。2.北京市16家a類定點醫療機構不用選,只要參加醫療保險就可以直接去就醫享受相關政策。3.各中醫醫院不用選,理由...