今天覆習軟考程式題,發現很多知識點很難應用到程式上。睡覺之前做個筆記整理一下,也是方便以後複習了。
首先問題是,對於具有n個元素的整型陣列a,需要進行處理的是刪除a中的所有值為0的陣列的元素,並將a中所有非零的元素按照原順序持續地儲存在陣列空間的前端,並且最後返回非零元素的個數。
解決思路是先申請乙個與陣列a的大小相同的動態陣列空間,然後依次掃瞄陣列a中的每乙個元素,將非零的元素依次複製到新申請動態陣列空間,到最後再將動態陣列中的元素傳回a中。
**如下:
這個函式的思路很容易理解,但是由於陣列a的資料需要複製給temp然後再複製回來,因此需要有更多的空間支援,處理速度的時間也會更長。而且這段**也存在一定的缺點,因為有可能由於申請記憶體空間的要求得不到滿足,從而導致函式的功能不能實現,而且最後也沒有釋放動態陣列空間,存在記憶體洩露問題。
還有另外一種解決的思路:利用下標i(初值為0)一次掃瞄陣列a的每乙個元素,下標k(初值為0)表示陣列a中連續儲存的非0元素的下標。掃瞄時,每遇到一組陣列元素,i就增加1,而遇到非零元素並且將其前移後k才增1。
**如下:
其實解決同一種問題有很多種不同的方法,每個方法都有自己的特點,所以在解決問題的時候應該多考慮,選擇更好的解決方案。
兩個檔案對比 C
public static bool filecompare string file1,string file2 int file1byte 0 int file2byte 0 using filestream fs1 new filestream file1,filemode.open fs2 n...
兩個問題的對比
問題1 cf390c 給定若干行聊天記錄 發言人 話 有些聊天記錄的 發言人 是缺失的,已知相鄰對話發言人一定不同,且每個發言人說的話裡都不會包含自己的名字,現給定可能的發言人的集合,請填充每個對話的發言人.來自codeforces round 390 問題2 lc36 給定乙個9 9的矩陣,有些元...
對比兩個公司的CMMI實施
我參與了兩個公司的cmmi實施過程,兩個不同的實施方法,各有利弊。下面將幾個不同做法整理如下 1.模板的作用 公司1在實施cmmi之前,制定了公共文件模板,然後在開發過程文件時,先開發乙個pa,待該pa的所有文件全部評審通過,再以該檔案為樣本開發其他pa。公司2在實施cmmi之前,未定義公共模板,待...