- 最长平衡子字符串
这里使用类似于双指针的思想,只要找到“01”这样的位置,我们就指定两个指针
l:向左
r:向右
查找满足条件的个数,注意边界
class Solution {
public:
int findTheLongestBalancedSubstring(string s) {
int ans=0;
for(int i = 0; i < s.size()-1; i++) {
if(s[i]=='0'&&s[i+1]=='1'){
int l=i,r=i+1;
int len=0;
while(l>=0&&r<s.size()){
if(s[l]=='0'&&s[r]=='1') l--,r++,len++;
else break;
}
ans=max(ans,len*2);
}
}
return ans;
}
};
- 转换二维数组
暂时没有好的思路
就一行一行的进行处理,如果当前数字已经放置到这一行中了,就放到下一行
class Solution {
public:
vector<vector<int>> findMatrix(vector<int>& nums) {
unordered_map<int,int>a;
int len=0;
for(auto t : nums) {
a[t]++;
len=max(t,len);
}
vector<vector<int>>ans;
vector<int>tmp;
int cnt=nums.size();
while(cnt){
tmp.clear();
for(int i=1;i<=len;i++){
if(a[i]){
tmp.push_back(i);
a[i]--;
cnt--;
}
}
ans.push_back(tmp);
}
return ans;
}
};