最小化字符串长度
模拟
C++ 代码
class Solution {
public:
int minimizedStringLength(string s) {
int res = 0;
for (int k = 0; k < s.size(); k ++ )
{
char c = s[k];
for (int i = k + 1; i < s.size(); i ++ )
{
if (s[i] == s[k])
{
s.erase(i, 1);
break;
}
}
for (int j = k - 1; j >= 0; j -- )
{
if (s[j] == s[k])
{
s.erase(j, 1);
k -= 1;
break;
}
}
}
res = s.size();
return res;
}
};
// 简单模拟
class Solution {
public:
int minimizedStringLength(string s) {
set<char> st;
for(char c : s) st.insert(c);
return st.size();
}
};
半有序排列
模拟
C++ 代码
class Solution {
public:
int semiOrderedPermutation(vector<int>& nums) {
int res = 0, n = nums.size();
if (nums[0] == 1 && nums[n - 1] == n) return 0;
int i = 1, j = 0;
for (i = 0; i < n; i ++ )
if (nums[i] == 1) break;
while (nums[i] == 1)
{
if (i == 0) break;
swap(nums[i], nums[i - 1]);
i = i - 1;
res ++;
}
for (j = 0; j < n; j ++ )
if (nums[j] == n) break;
while (nums[j] == n)
{
if (j == n - 1) break;
swap(nums[j], nums[j + 1]);
j = j + 1;
res ++;
}
return res;
}
};
查询后矩阵的和
没看数据范围,以为模拟wa一发呜呜呜
看优化代码,模拟
C++ 代码
class Solution {
public:
long long matrixSumQueries(int n, vector<vector<int>>& queries) {
long long res = 0;
vector<bool> row(n, 0), col(n, 0);
int rownum = n, colnum = n;
reverse(queries.begin(), queries.end());
for (auto &p : queries)
{
if (p[0] == 1)
{
if (row[p[1]]) continue;
row[p[1]] = 1;
res = res + 1LL * p[2] * colnum;
-- rownum;
}
else
{
if (col[p[1]]) continue;
col[p[1]] = 1;
res = res + 1LL * p[2] * rownum;
-- colnum;
}
}
return res;
}
};
查询后矩阵的和
C++ 代码