找网站公司做网站用了织梦可以吗,南京app开发定制,谷歌浏览器最新版本,温州网站开发网站的制作本节目录 1.最长回文串2.增减字符串匹配3.分发饼干4.最优除法5.跳跃游戏II6.跳跃游戏7.加油站8.单调递增的数字9.坏了的计算器 1.最长回文串
最长回文串
class Solution {
public:int longestPalindrome(string s) {//计数一#xff1a;用数组模拟哈希表int hash[127] {0}… 本节目录 1.最长回文串2.增减字符串匹配3.分发饼干4.最优除法5.跳跃游戏II6.跳跃游戏7.加油站8.单调递增的数字9.坏了的计算器 1.最长回文串
最长回文串
class Solution {
public:int longestPalindrome(string s) {//计数一用数组模拟哈希表int hash[127] {0};for(auto x:s){hash[x];}//统计结果int ret 0;for(auto x:hash){ret x/2*2;}return rets.size()?ret1:ret;}
};2.增减字符串匹配
增减字符串匹配
class Solution {
public:vectorint diStringMatch(string s) {//贪心//遇到I选择当前能选择的最小的数//遇到D选择当前能选择的最大的数int left 0,right s.size();vectorint ret;for(auto ch:s){if(ch I) ret.push_back(left);else ret.push_back(right--);}ret.push_back(left);return ret;}
};3.分发饼干
分发饼干
class Solution {
public:int findContentChildren(vectorint g, vectorint s) {int ret 0,m g.size(),n s.size();sort(g.begin(),g.end());sort(s.begin(),s.end());for(int i0,j0;imjn;i,j){while(jns[j]g[i]) j;if(jn) ret;}return ret;}
};4.最优除法
最优除法
class Solution {
public:string optimalDivision(vectorint nums) {//贪心找规律int n nums.size();if(n 1) return to_string(nums[0]);if(n 2) return to_string(nums[0])/to_string(nums[1]);string str to_string(nums[0])/(to_string(nums[1]);for(int i2;in;i){str/to_string(nums[i]);}str );return str;}
};5.跳跃游戏II
跳跃游戏II
class Solution {
public:int jump(vectorint nums) {//使用层序遍历的思想一层一层往后跳//maxPos表示下一层最右端点的下标int left 0,right 0,maxPos 0,ret 0,n nums.size();while(leftright){if(maxPosn-1) return ret;//判断能否跳到最后一个位置//遍历当前层for(int ileft;iright;i){maxPos max(maxPos,nums[i]i);}left right1;right maxPos;ret;}return -1;}
};6.跳跃游戏
跳跃游戏
class Solution {
public:bool canJump(vectorint nums) {//跟上一题跳跃游戏II思路一模一样//一层一层往后跳层序遍历int left 0,right 0,maxPos 0,n nums.size();while(leftright){if(maxPosn-1) return true;for(int ileft;iright;i){maxPos max(maxPos,nums[i]i);}left right1;right maxPos;}return false;}
};7.加油站
加油站
class Solution {
public:int canCompleteCircuit(vectorint gas, vectorint cost) {//解法一暴力枚举 O(n^2) 会超时int n gas.size();int step n;for(int i0;in;i){int rest 0;for(int step0;stepn;step){int index (istep)%n;rest restgas[index]-cost[index];if(rest0) break;}if(rest0) return i;}return -1;}
};class Solution {
public:int canCompleteCircuit(vectorint gas, vectorint cost) {//解法二找规律在解法一的基础上稍作改动int n gas.size();for(int i0;in;i){int rest 0;int step 0;for(;stepn;step){int index (istep)%n;rest restgas[index]-cost[index];if(rest0) break;}if(rest0) return i;i istep;}return -1;}
};8.单调递增的数字
单调递增的数字
class Solution {
public:int monotoneIncreasingDigits(int n) {//找规律string s to_string(n);int i0,m s.size();//找到第一个递减的位置while(i1m s[i]s[i1]) i;if(i1 m) return n;//回推while(i-10 s[i]s[i-1]) i--;s[i]--;for(int ji1;jm;j){s[j]9;}return stoi(s);}
};9.坏了的计算器
坏了的计算器
class Solution {
public:int brokenCalc(int startValue, int target) {//正难则反贪心//从end-begin *-/ -1-1int ret 0;while(targetstartValue){if(target%2 0) target/2;else target 1;ret;}return retstartValue-target;}
};