題目描述
乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。
思路:
如果乙個陣列中,只有乙個數字出現一次的話,求這個數的?將序列中的所有數字異或,因為相同的數字異或會為0,乙個不為0的數字異或還是這個數字本身。
這個題可以轉換為上述的題,將序列中的所有數字異或,最後得到的的數,是這兩個不同的數字的異或,用序列中的每個數和得到的這個數求&運算,根據等不等於0將陣列分成兩組。
**:
題目描述class
solution
// 第一步先整體異或
int result = data[0]
;for
(auto it = data.
begin()
+1;it != data.
end();
++it)
// 第二步,分解找到第乙個位元位為1,這裡從低往高進行
int flag =1;
int length =
sizeof
(int);
for(
int i =
0;i < length;
++i)
}// 第三部分,分組異或
*num1 =0;
*num2 =0;
for(
int i =
0;i size()
;++i)
else}}
};
小明很喜歡數學,有一天他在做數學作業時,要求計算出9~16的和,他馬上就寫出了正確答案是100。但是他並不滿足於此,他在想究竟有多少種連續的正數序列的和為100(至少包括兩個數)。沒多久,他就得到另一組連續正數和為100的序列:18,19,20,21,22。現在把問題交給你,你能不能也很快的找出所有和為s的連續正數序列? good luck!
輸出描述:
輸出所有和為s的連續正數序列。序列內按照從小至大的順序,序列間按照從小到大的順序。
思路:
滑動視窗的思想解決,題目中的隱含條件就是序列最大值不會大於該值。
**:
題目描述class
solution
result.
push_back
(vec)
;++low;
}else
if(total < sum)
else
}return result;}}
;
組合語言中有一種移位指令叫做迴圈左移(rol),現在有個簡單的任務,就是用字串模擬這個指令的運算結果。對於乙個給定的字串行s,請你把其迴圈左移k位後的序列輸出。例如,字串行s=」abcxyzdef」,要求輸出迴圈左移3位後的結果,即「xyzdefabc」。是不是很簡單?ok,搞定它!
思路:
儲存第乙個,剩下的整體往前移動乙個,第乙個放在最後,完成一次移動,迴圈就可以完成多次移動
**:
思路:class
solution
str[i-1]
= temp;
//i要減一防止越界
} string leftrotatestring
(string str,
int n)
n %= str.
size()
;while
(n--
) cout
;
區域性逆置,整體逆置
**:
class
solution
};
2016長樂夏令營 Day9
t1 帶權並查集。每個約束看做一條x連向y的邊,邊權為x y c 對於乙個x,可能有多個y與他有關係,間接可以算出y與y 的關係,那麼邊權就記為y y 每次加入條件,就看看是否衝突 細節詳見 據說正解是差分約束?苟蒻是真不會。include include includeusing namespac...
雙指標演算法 day 9
樸素做法模板 for int i 0 i n i for int j 0 j i j if check j,i 雙指標演算法模板 for int i 0,j 0 i n i 問題 最長連續不重複子序列 給定乙個長度為n的整數序列,請找出最長的不包含重複數字的連續區間,輸出它的長度。輸入格式 第一行包...
演算法題Day9 移除元素
給定乙個陣列 nums 和乙個值 val,你需要原地移除所有數值等於 val 的元素,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 o 1 額外空間的條件下完成。元素的順序可以改變。你不需要考慮陣列中超出新長度後面的元素。示例 1 給定 nums 3,2,2,3 ...