思路:兩個相同數異或結果為0
int a=a^b;
int b=a^b;
int a=a^b;
思路:兩個相同數異或結果為0,讓陣列中所有的數字相異或,留下的結果即為出現⼀次的數字
int find_one_time_number(vector data)
return result ;
}
思路:兩個相同數異或結果為0,讓陣列中所有的數字相異或, 留下的結果為之出現⼀次的兩個數字相異或,因為這兩個數字不同,那麼異或結果中總有⼀位為1,我們可以根據這⼀位將所有數字分為兩組,每組中異或的結果即為改組中出現⼀次的數字。
vector find_one_time_numbers(vector data)
while (1)else tmp< <1;
}for(int i =0; i思路1:⼀個數字減去1 之後可以讓最後⼀位1(記為第i 位)變為0,第i 位之後的數字原來為0 現在都變為1,然後讓這個數字與原來的數字進⾏與運算,即相當於減掉最後⼀位為1 的數字。
int count_one_number(int num)
return count;
}
思路2: 假設數字n 最後⼀位為1 的是第i 位,將數字取反之後第i 位變為0,之後的每⼀位由0 變為1,然後讓取反後的結果加1,則第i 位重新變為1 ,之後的每位又重新變為0。
int count_one_number2(int num)
return count;
}
思路:如果⼀個數字是2 的冪次,那麼只有最⾼位為1 ,也就是只需要判斷這個數字減掉最⾼位之後是否為0 即可,這相當於統計⼆進製中1的個數(section 2.1.3) 的的⼀個特殊情況。
bool log2 (int num)else
return false;
}
思路:(100(4); 10000(42
); 1000000(43
) ) 如果⼀個數字是4 的冪次,那麼只有最⾼位為1 ,並且有偶數個0, 即最⾼位1 在奇數字上。我們可以根據之前的經驗判斷這個數是不是2 的冪次,然後判斷1 是不是在奇數字上即可,這個可以讓數字n 與0x55555555 (奇數字為1,偶數字為0)相與。
bool log4 (int num)else
return false;
}
常見面試題
1.get和post的區別 1 本質區別 get是向伺服器請求資料,post是向伺服器傳送資料。2 伺服器獲取值的方式 get方式提交的資料,伺服器端使用request.querystring獲取變數的值。post方式提交的資料,伺服器端使用request.form獲取資料。3 安全性 get安全效...
常見面試題
1 一行 實現1 100之和 lst i for i in range 1,101 print sum lst 2 如何在乙個函式內部修改全域性變數?在函式內部新增 global 變數名 這樣就可以在本地作用域定義全域性作用域了 name 大明 def eat name1 global name n...
常見面試題
dns解析 發起tcp三次握手,並建立tcp連線 發起http請求 伺服器相應http請求並得到html 伺服器解析html 並對頁面進行渲染然後返回給使用者 首先先進行ioc容器的初始化 ioc 容器的初始化過程分為三步驟 resource 定位 beandefinition 的載入和解析,bea...