此類問題一般是矩陣的花式列印,只要注意不要糾結於位置的變化,巨集觀思考就可以得出簡潔的**
這個問題不要想著索引怎麼變化。
比如列印最外圈一行 到 最右面的列結束,列印最外圈一列到最下面的行結束
所以說只要記錄左上角和右下角兩個點就能控制列印一圈矩陣,不用考慮變化問題了
特殊情況要考慮只有一行和一列的情況
這個題目可以確定乙個對角線然後每次列印對角線上的元素就可以,外部迴圈來控制對角線兩端的元素變化。
上面的元素先往右面跑,跑不動,再跑到下面,左側的元素先往下跑,然後往右跑。
然後布林型別控制從上面往下面列印還是從下面往上面列印
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.各中醫醫院不用選,理由...