自己编程怎么做网站教程,网站顶部悬浮广告代码,接做效果图网站,祥云平台技术支持双语网站1.最长回文串 我们可以存下每个字母的个数#xff0c;然后分类讨论 如果是奇数就减一加到结果中如果是偶数就直接加入即可 最后判断长度跟原字符串的差距#xff0c;如果小于原数组说明有奇数结果1 class Solution {
public:int longestPalindrome(string s) {int ret0;//1.计…1.最长回文串 我们可以存下每个字母的个数然后分类讨论 如果是奇数就减一加到结果中如果是偶数就直接加入即可 最后判断长度跟原字符串的差距如果小于原数组说明有奇数结果1 class Solution {
public:int longestPalindrome(string s) {int ret0;//1.计数int hash[127]{0};for(char ch:s) hash[ch];//2.统计结果for(int x:hash){retx/2*2;}return rets.size() ? ret1 :ret;}
};2.增减字符串匹配 如果是I说明数字是递增的贪心就体现在把最小的数字放在这个因为不论后面放什么数字都一定会是递增的如果是D说明数字在递减同理把最大的数字放在这即可。 所以我们使用left和right来标记数组的最大和最小即可 class Solution {
public:vectorint diStringMatch(string s) {int left0,rights.size();vectorint ret;for(auto ch:s){if(chI)ret.push_back(left);elseret.push_back(right--);}ret.push_back(left);return ret;}
};3.分发饼干 我们先对这两个数组排序然后就按照田忌赛马的思路如果最小的可以满足就直接给最小的然后向后继续寻找即可。 也就是两个指针找到最小能满足孩子的饼干不能就直接 class Solution {
public:int findContentChildren(vectorint g, vectorint s) {sort(g.begin(),g.end());sort(s.begin(),s.end());//两个指针找到最小能满足孩子的饼干不能就直接int ret0,mg.size(),ns.size();for(int i0,j0;im jn;i,j){while(jn g[i]s[j])//这个是循环直到找到合适的饼干为止{j;}if(jn){ret;}}return ret;}
};4.跳跃游戏Ⅱ 用left和righ控制跳跃的空间leftright1 right就是每次跳跃的最大距离 class Solution {
public:int jump(vectorint nums) {int count0;int nnums.size();int left0,right0;int maxn0;while(leftright){if(maxnn-1)return count;for(int ileft;iright;i)//找出区间内最大的数及其下标的和{maxnmax(maxn,nums[i]i);}leftright1;rightmaxn;count;}return -1;}
};5.跳跃游戏 这里把上题的返回值修改一下即可
class Solution {
public:bool canJump(vectorint nums) {int count 0;int n nums.size();int left 0, right 0;int maxn 0;while (left right) {if (maxn n - 1)return true;for (int i left; i right;i) // 找出区间内最大的数及其下标的和{maxn max(maxn, nums[i] i);}left right 1;right maxn;count;}return false;}
};6.最优除法 根据除除为乘我们只需要把b到最后这段区间的数字优先处理就可以让分子变为最大分母最小 class Solution {
public:string optimalDivision(vectorint nums) {int nnums.size();if(n1){return to_string(nums[0]);}if(n2){return to_string(nums[0])/to_string(nums[1]);}string strto_string(nums[0])/(to_string(nums[1]);for(int i2;in;i){str/;strto_string(nums[i]);}str);return str;}
};