leetcode(3)雜湊簡單模式

2021-09-10 19:52:57 字數 1571 閱讀 8542

1.給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。

你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。

示例:給定 nums = [2, 7, 11, 15], target = 9

因為 nums[0] + nums[1] = 2 + 7 = 9

所以返回 [0, 1]

int* twosum(int* nums, int numssize, int target) {

int min=int_max;

int i=0;//迴圈變數

for(i=0;i2.給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。

說明:你的演算法應該具有線性時間複雜度。 你可以不使用額外空間來實現嗎?

方法一(按位異或)

int singlenumber(int* nums, int numssize) {

int ans=0;

for(int i=0;i下面舉例說明∧運算子的應用:  

(1)使特定位翻轉  假設有01111010,想使其低4位翻轉,即1變為0,0變為1。可以將它與00001111進行∧運算,即  結果值的低4位正好是原數低4位的翻轉。要使哪幾位翻轉就將與其∧運算的該幾位置為1即可。這是因為原數中值為1的位與1進行∧運算得0,原數中的位值0與1進行∧運算的結果得1。  

(2)與0相∧,保留原值  如012∧00=012  因為原數中的1與0進行∧運算得1,0∧0得0,故保留原數。  

(3)交換兩個值,不用臨時變數  假如a=3,b=4。想將a和b的值互換,可以用以下賦值語句實現:  a=a∧b;

b=b∧a;

a=a∧b;  

可以用下面的豎式來說明:即等效於以下兩步: 

① 執行前兩個賦值語句:「a=a∧b;」和「b=b∧a;」相當於b=b∧(a∧b)。而b∧a∧b等於a∧b∧b。b∧b的結果為0,因為同乙個數與本身相∧,結果必為0。因此b的值等於a∧0,即a,其值為3。 

② 再執行第三個賦值語句:a=a∧b。由於a的值等於(a∧b),b的值等於(b∧a∧b),因此,相當於a=a∧b∧b∧a∧b,即a的值等於a∧a∧b∧b∧b,等於b。  a得到b原來的值。 在【二進位制值運算】中:不同為1,相同為0,如1001異或1010等於0011。

異或也叫半加運算,其運算法則相當於不帶進製的二進位制加法:二進位制下用1表示真,0表示假,則異或的運算法則為:0異或0=0,1異或0=1,0異或1=1,1異或1=0(同為0,異為1),這些法則與加法是相同的,只是不帶進製。

方法二(雜湊表)

(待補充)

3.編寫乙個演算法來判斷乙個數是不是「快樂數」。

乙個「快樂數」定義為:對於乙個正整數,每一次將該數替換為它每個位置上的數字的平方和,然後重複這個過程直到這個數變為 1,也可能是無限迴圈但始終變不到 1。如果可以變為 1,那麼這個數就是快樂數。

示例:輸入: 19

輸出: true

解釋:12 + 92 = 82

82 + 22 = 68

62 + 82 = 100

12 + 02 + 02 = 1

簡單模式Hello World

功能 乙個生產者p傳送訊息到佇列q,乙個消費者c接收 生產者實現思路 建立連線工廠connectionfactory,設定服務位址127.0.0.1,埠號5672,設定使用者名稱 密碼 virtual host,從連線工廠中獲取連線connection,使用連線建立通道channel,使用通道cha...

Leetcode 3題目解答

leetcode 3題目解答 乙個字串,要得到連續各個元素都不同的最長子串長度。該函式返回乙個maxlen即最長子串的長度,用乙個hashmap存放字母以及其對應下標,利用for迴圈裡的i遍歷該string,則對於每個字母,有以下兩種情況 1 若當前字母不在hashmap中則放入,用乙個len來記錄...

RabbitMq簡單模式 工作模式

生產者的訊息被負載均衡到各個消費者去,一條訊息只會被乙個消費者消費,不會產生一條訊息重複消費的問題 amqp user pass ip 5672 virtualhost type rabbitmq struct錯誤處理函式failonerr是在有錯誤的時候列印後面的引數和錯誤資訊func newra...