1.最長回文串
我們可以存下每個字母的個數,然后分類討論
- 如果是奇數就減一加到結果中
- 如果是偶數就直接加入即可
最后判斷長度跟原字符串的差距,如果小于原數組說明有奇數結果+1
class Solution {
public:int longestPalindrome(string s) {int ret=0;//1.計數int hash[127]={0};for(char ch:s) hash[ch]++;//2.統計結果for(int x:hash){ret+=x/2*2;}return ret<s.size() ? ret+1 :ret;}
};
2.增減字符串匹配
- 如果是I說明數字是遞增的,貪心就體現在把最小的數字放在這個,因為不論后面放什么數字都一定會是遞增的
- 如果是D說明數字在遞減,同理把最大的數字放在這即可。
所以我們使用left和right來標記數組的最大和最小即可
class Solution {
public:vector<int> diStringMatch(string s) {int left=0,right=s.size();vector<int> ret;for(auto ch:s){if(ch=='I')ret.push_back(left++);elseret.push_back(right--);}ret.push_back(left);return ret;}
};
3.分發餅干
我們先對這兩個數組排序,然后就按照田忌賽馬的思路,如果最小的可以滿足就直接給最小的,然后向后繼續尋找即可。
也就是:兩個指針,找到最小能滿足孩子的餅干,不能就直接++
class Solution {
public:int findContentChildren(vector<int>& g, vector<int>& s) {sort(g.begin(),g.end());sort(s.begin(),s.end());//兩個指針,找到最小能滿足孩子的餅干,不能就直接++int ret=0,m=g.size(),n=s.size();for(int i=0,j=0;i<m && j<n;i++,j++){while(j<n&& g[i]>s[j])//這個是循環,直到找到合適的餅干為止{j++;}if(j<n){ret++;}}return ret;}
};
4.跳躍游戲Ⅱ
用left和righ控制跳躍的空間,left=right+1 right就是每次跳躍的最大距離
class Solution {
public:int jump(vector<int>& nums) {int count=0;int n=nums.size();int left=0,right=0;int maxn=0;while(left<=right){if(maxn>=n-1)return count;for(int i=left;i<=right;i++)//找出區間內最大的數及其下標的和{maxn=max(maxn,nums[i]+i);}left=right+1;right=maxn;count++;}return -1;}
};
5.跳躍游戲
這里把上題的返回值修改一下即可
class Solution {
public:bool canJump(vector<int>& 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(vector<int>& 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 i=2;i<n;i++){str+="/";str+=to_string(nums[i]);}str+=")";return str;}
};