程式設計題練習 1

2021-08-28 02:13:11 字數 1474 閱讀 4982

**

思路:建立兩個字元陣列,乙個按順序存放數字,乙個按順序存放字母,然拼接這兩個陣列。(其實用string類會更好,這裡用vector輸入的時候帶空格,不過思想是一樣的)

#include

#include

using

namespace

std;

class solution

for(int i=0;ifor(int j=0;j//newv[v1.size()+j]=v2[j];

}return newv;

}};int main()

while(getchar()!='\n');

v = s.neworder(v);

for(int i=0;icout

<' ';

}return

0;}

劍指offer題,想了很久才明白。資料結構差的很。

思路:首先得建立三個節點,乙個指向當前節點的前乙個節點,乙個指向當前節點,乙個指向當前節點的後乙個節點,防止鍊錶從中間斷開。

ppre 先指向空,pnode指向原鍊錶的phead,pnext=pnode->next;

class

solution

return ppre;//頭結點指向最後乙個結點產生新的頭結點,也就是原單鏈表的尾結點變成頭結點

}};9

法一:時間複雜度o(n),空間複雜度o(n)

#include

#include

using

namespace

std;

int main()

while(getchar()!='\n');

vector

count(n.size(), 0);

for(int i=0;ifor(int i=0;iif(count[i]>1)

cout

<' ';

}return

0;}

法二:參考部落格

不過該部落格中只對是否有重複元素進行判斷,未輸出重複的元素。我稍微修改了一下下。

思路:假如不存在重複元素排序後的的陣列會是連續的,也即第i個元素是數字i-1,但是如果使用常用的排序方法,時間複雜度至少為o(nlogn),所以這裡需要利用到陣列的特殊性進行排序,即將數字i-1交換到陣列中第i個位置。

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

#include

#include

using

namespace

std;

int main()

while(getchar()!='\n');

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

else

}}

程式設計題練習

在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請寫乙個函式,輸入這樣乙個二維陣列和乙個整數,判斷陣列中是否有該整數。思路 矩陣是有序的,從左下角來看,向上是遞減的,向右是遞增的。因此從左下角出發,當目的數字比當前數字大的時候,右移 就執行向右查詢 當目的數...

程式設計練習1

1.編寫乙個程式列印乙個表,表的每一行都給出乙個整數,它的平方以及它的立方。要求使用者輸入表的上限與下限。使用for迴圈。include includeusing namespace std void funtiongetin int a,int b int main 2.編寫乙個程式,實現9 9乘...

程式設計題練習1 元素查詢

有乙個排過序的陣列,包含n個整數,但是這個陣列向左進行了一定長度的移位,例如,原陣列為 1,2,3,4,5,6 向左移位5個位置即變成了 6,1,2,3,4,5 現在對於移位後的陣列,需要查詢某個元素的位置。請設計乙個複雜度為log級別的演算法完成這個任務。給定乙個int陣列a,為移位後的陣列,同時...