上面幾套題其實思路都是一樣的,掌握了規律後其實很容易得到想要的結果,所以今天我就多寫寫,爭取盡快寫完這上面的試題。
題目描述:輸入乙個整數,輸出該數二進位制表示中1的個數。其中負數用補碼表示。
題目分析:這道題本身並不算難,但是必須搞清楚負數補碼的關係後才好繼續,這方面也是我的弱點,所以我打算在這裡複習一下負數補碼的關係:
正數:正數的補碼是其二進位制表示,與原碼相同。如+9的補碼是00001001,和自身的二進位制表示相同。
負數:求負整數的補碼,將其原碼除符號位外的所有位取反後加1。如-5的補碼是這樣求的。正數5的碼(00000101)———所有位取反(11111010)————加一後操作(11111010)
同乙個數字在不同的補碼表示形式中是不同的。比如-15的補碼,在8位二進位制中是11110001,然而在16位二進位制補碼表示中,就是1111111111110001。以下都使用8位2進製來表示。在牛客網上應該預設是32位,4個位元組,因此求補碼的時候需要注意與的數的大小。
已知乙個數的補碼,求原碼的操作其實就是對該補碼再求補碼。
因此該題目的具體做法如下,先判斷正負,再移位操作,而對某個位取反,在計算機中其實就是異或操作:
class
solution
intcount(0
);if(n <0)
while
(n !=0)
return count;}}
;
題目描述:給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。保證base和exponent不同時為0。這個題表面上看起來比較簡單。但是如果將負數考慮進來的話就需要額外操心了。如果base為負的話,那麼當exponet為偶數時,需要去掉負號。而如果exponent為負數的話,那麼相當於求原來數的倒數了。
class
solution
if(base <0)
double output=1;
for(
int i =
0; i < exponent; i++)if
(exponentflag ==1)
if(baseflag ==1)
}return output;}}
;
題目描述:輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有的奇數字於陣列的前半部分,所有的偶數字於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。
題目分析:這個題第一眼看上去並不難,最簡單的思路就是設計兩個陣列,乙個存奇數,乙個存偶數,然後最終將奇數先放回原來的坑中,再將偶數放回之前的坑中。這樣的做法時間複雜度使2n,空間複雜度是n。
class
solution
}for
(int i =
0; i < hellokitty.
size()
; i++)}
}};
但是如果不適用額外的空間的話,有沒有什麼比較好的解法呢?考慮到不能改變先後順序,可以採用氣泡排序的思想,如果前偶後奇,則交換兩者的位置,這樣的話兩次巢狀迴圈後就能達到理想的效果。
//這裡懶得寫了,直接拷貝別人的即可,時間複雜度略高,n^2
class
solution}}
}};
題目描述:輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。
題目分析:這道題的解法很多,比如說將整個鍊錶壓入棧中,然後依次彈出k個即可,這樣的話時間複雜度為n+k,空間複雜度為n略大。故考慮用兩個指標的方法,這種方法非常巧妙。指標a從頭部出發,而另乙個指標b從第k個節點出發,當指標b到達末尾時,指標a所指向的位置就是所求節點。
/*
struct listnode
};*/
class
solution
while
(p2-
>next !=
nullptr
)return p1;}}
;
劍指offer真題11 15
11題 輸入乙個整數,輸出該數二進位制表示中1的個數。其中負數用補碼表示 法一 讓n減去1,我們發現,在讓他和原來的n按位與之後,n中的1會減少乙個,依次迴圈下去,就可以累計出1的個數,且這個方式不用擔心負數的問題 class solution return count 法二 定義乙個flag為1,...
劍指offer題六
把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個非遞減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。note 給出的所有元素都大於0,若陣列大小為0,請返回0。public static void main string args ...
劍指offer 程式設計題
輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否可能為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。注意 這兩個序列的長度是相等的 ...