**
思路:建立兩個字元陣列,乙個按順序存放數字,乙個按順序存放字母,然拼接這兩個陣列。(其實用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,為移位後的陣列,同時...