class Solution {
public:
vector<string> findRepeatedDnaSequences(string s) {
unordered_map<string, int>hash;//每十个字符串出现的次数
vector<string> res;
for(int i = 0; i + 10 <= s.size(); i ++)
{
string str = s.substr(i, 10); //起始 分割长度
hash[str] ++;
if(hash[str] == 2) res.push_back(str);
}
return res;
}
};
class Solution {
public:
int maxProfit(int k, vector<int>& prices) {
int n = prices.size();
if(k > n / 2)
{
int res = 0;
for(int i = 1; i < n; i ++) res += max(0, prices[i] - prices[i - 1]);
return res;
}
int f[k + 1], g[k + 1];
for(int i = 0; i <= k; i ++) f[i] = 0, g[i] = INT_MIN;
for(auto cur : prices)
for(int i = k; i; i --)
{
f[i] = max(f[i], g[i] + cur);
g[i] = max(g[i], f[i - 1] - cur);
}
return f[k];
}
};
class Solution {
public:
void rotate(vector<int>& nums, int k) {
int n = nums.size();
k %= n;
reverse(nums.begin(), nums.end());
reverse(nums.begin(), nums.begin() + k);
reverse(nums.begin() + k, nums.end());
}
};
class Solution {
public:
uint32_t reverseBits(uint32_t n) {
uint32_t res = 0;
for(int i = 0; i < 32; i ++)
res = (res << 1) + (n >> i & 1);
return res;
}
};