輸入乙個整數,輸出該數二進位制表示中1的個數。其中負數用補碼表示。
思路:本題最初想簡單的求模算出等於1的位數,但是發現負數不行。其實簡單的做法應該是與
1相與,如果為
1,則原來為
1,迴圈移位判斷。但注意,要左移,要是右移,對於負數會一直在高位補
1,導致結果不準確。
class solution
flag=flag<<1; }
return count; }
};
給定乙個double型別的浮點數
base
和int
型別的整數
exponent
。求base
的exponent
次方。遞迴最簡單了。。。迭代比較麻煩。
class solution };
輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有的奇數字於陣列的前半部分,所有的偶數字於位於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。
因為要求保證相對位置,所以只能相鄰的交換,不能用快排這種不穩定的演算法。
//兩個思路吧,第乙個思路:類似冒泡演算法,前偶後奇數就交換:
class solution }
} }};
//第二個思路:再建立乙個陣列
class solution
else
} vector::iterator ib2, ie2;
ib2 = array_temp.begin();
ie2 = array_temp.end();
for (; ib2 != ie2; ib2++) //將新陣列的數新增到老陣列 }
};
輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。
本題土辦法就是先遍歷一遍鍊錶,找到一共多少個,倒數第k個就是正數第
count-k+1
個,從頭再遍歷一遍,注意
k=0和
k>count
的情況的處理,都返回
null
;但是有個非常好的思路2.用兩個指標,
1個跑了
k-1個時,第
2 個再開跑,則
1跑到底時,第
2個指標指標所指就是要找的倒數第k個。
思路1:
class solution
if(k>count)
return null;
int find=count-k+1;
int x=1;
p=plisthead;
while(x
p=p->next;
x++; }
return p; }
};思路二
時間複雜度o(n),
一次遍歷即可
public class solution
k--;
} //如果節點個數小於所求的倒數第
k個節點,則返回空
if(count
return pre; }
}
輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。
class solution else */
while(phead1 != null && phead2 != null) else
phead1 = phead1->next;
} else else
phead2 = phead2->next; }
} if(phead1 == null)
if(phead2 == null)
return result;
} };
輸入兩棵二叉樹a,
b,判斷
b是不是
a的子結構。(
ps:我們約定空樹不是任意乙個樹的子結構)
本題要注意,b可能在
a的左子樹或者
a,或者
a的右子樹中,注意比較方法。
class solution
bool issubtree(treenode* proot1 , treenode* proot2) };
定義棧的資料結構,請在該型別中實現乙個能夠得到棧最小元素的min函式。
class solution }
void pop()
int top()
int min() };
牛客網程式設計題
參考了排行榜大神 1.計算字串最後乙個單詞的長度,單詞以空格隔開 a raw input b a.split print len b 1 2.寫出乙個程式,接受乙個有字母和數字以及空格組成的字串,和乙個字元,然後輸出輸入字串中含有該字元的個數。不區分大小寫 a raw input lower b r...
牛客網 程式設計題2
給定乙個陣列序列,需要求選出乙個區間,使得該區間是所有區間中經過如下計算的值最大的乙個 區間中的最小數 區間所有數的和最後程式輸出經過計算後的最大值即可,不需要輸出具體的區間。如給定序列 6 2 1 則根據上述公式,可得到所有可以選定各個區間的計算值 6 6 6 36 2 2 2 4 1 1 1 1...
判斷作弊 牛客 程式設計 牛客網刷程式設計題
1 時間限制 c c 1秒,其他語言2秒空間限制 c c 32m,其他語言64m 計算字串最後乙個單詞的長度,單詞以空格隔開。輸入描述 一行字串,非空,長度小於5000。輸出描述 整數n,最後乙個單詞的長度。示例1輸入 hello world 輸出 include int main char str...