程式設計師面試金典第一章 陣列與字串(7)清除行列

2021-07-25 20:04:41 字數 656 閱讀 5435

1.1 題目描述

請編寫乙個演算法,若n階方陣中某個元素為0,則將其所在的行與列清零。

給定乙個n階方陣intmat和矩陣的階數n,請返回完成操作後的int方陣(c++中為vector>),保證n小於等於300,矩陣中的元素為int範圍內。

測試樣例:

[[1,2,3],[0,1,2],[0,0,1]]

返回:[[0,0,3],[0,0,0],[0,0,0]]

1.2 解題思路:

思路1:最笨的方法,遍歷方陣每個元素,如果為0,那麼清除其行列。這種方法存在的問題是,很多點會被清除多次

時間複雜度o(n^3), 空間複雜度o(1)

思路2:遍歷整個陣列,標記需要清除的行列,最後統一清除,這樣也會有一些兩次清除的地方,不過還好,如果加了判斷,避免了兩次清除,但是判斷的開銷也很可觀

時間複雜度o(n^2), 空間複雜度o(n)

class clearer }}

for(int i = 0; i < n; ++i)

}for(int i = 0; i < n; ++i)

}return mat;

}};

tips:剛開始判斷n小於等於1 或者 mat不是n方陣的情況

程式設計師面試金典第一章 陣列與字串(4) 空格替換

1.1 題目描述 請編寫乙個方法,將字串中的空格全部替換為 20 假定該字串有足夠的空間存放新增的字元,並且知道字串的真實長度 小於等於1000 同時保證字串由大小寫的英文本母組成。給定乙個string inistring 為原始的串,以及串的長度 int len,返回替換後的string。測試樣例...

《王道程式設計師求職寶典》第一章 陣列

一些基本概念 1.c 內建型別 分為基本型別和復合型別。基本型別包括整數 浮點數及兩者的多種變體。復合型別包括陣列 字串 指標 引用 結構體和共用體等 2.記憶體分割槽 1 堆 由程式設計師手動分配和釋放,完全不同於資料結構中的堆,分配方式類似鍊錶。由malloc或者new來分配,free和dele...

《程式設計師面試金典》 反轉字串

題目描述 請實現乙個演算法,在不使用額外資料結構和儲存空間的情況下,翻轉乙個給定的字串 可以使用單個過程變數 給定乙個string inistring,請返回乙個string,為翻轉後的字串。保證字串的長度小於等於5000。測試樣例 this is nowcoder 返回 redocwon si s...