- 分发饼干(LeetCode 455.)
class Solution {
public:
int findContentChildren(vector<int>& g, vector<int>& s) {
sort(g.begin(),g.end());
sort(s.begin(),s.end());
int child = 0;
int cookie = 0;
while(child <g.size() && cookie <s.size()){
if(g[child] <= s[cookie]){
child++;
}
cookie++;
}
return child;
}
};
2.摆动序列(LeetCode 376.)
class Solution {
public:
int wiggleMaxLength(vector<int>& nums) {
if(nums.size() < 2){
return nums.size();
}
static const int BEGIN = 0;
static const int UP = 1;
static const int DOWN = 2;
int STATE = BEGIN;
int max_length = 1;
for(int i=1;i<nums.size();i++){
switch(STATE){
case BEGIN:
if(nums[i-1] < nums[i]){
STATE = UP;
max_length++;
}
else if(nums[i-1] > nums[i]){
STATE = DOWN;
max_length++;
}
break;
case UP:
if(nums[i-1] > nums[i]){
STATE = DOWN;
max_length++;
}
break;
case DOWN:
if(nums[i-1] < nums[i]){
STATE = UP;
max_length++;
}
break;
}
}
return max_length;
}
};
3.移掉K位数字(LeetCode 402.)
class Solution {
public:
string removeKdigits(string num, int k) {
vector<int> s;
string result ="";
for(int i = 0;i<num.length();i++){
int number = num[i] - '0';
while(s.size() != 0 && s[s.size()-1] > number && k> 0 ){
s.pop_back();
k--;
}
if(number != 0 || s.size() != 0){
s.push_back(number);
}
}
while(s.size() != 0 && k > 0){
s.pop_back();
k--;
}
for(int i = 0;i<s.size();i++){
result.append(1,'0'+s[i]);
}
if(result ==""){
result = "0";
}
return result;
}
};
4.跳跃游戏(LeetCode 55.)
class Solution {
public:
bool canJump(vector<int>& nums) {
vector<int> index;
for(int i=0;i<nums.size();i++){
index.push_back(i+nums[i]);
}
int jump = 0;
int max_index = index[0];
while(jump < index.size() && jump <=max_index){
if(max_index < index[jump]){
max_index = index[jump];
}
jump++;
}
if(jump == index.size()){
return true;
}
return false;
}
};
5.跳跃游戏2(LeetCode 45.)
class Solution {
public:
int jump(vector<int>& nums) {
if(nums.size() < 2) return 0;
int current_max_index = nums[0];
int pre_max_max_index = nums[0];
int jump_min = 1;
for(int i =1;i<nums.size();i++){
if(i > current_max_index){
jump_min++;
current_max_index = pre_max_max_index;
}
if(pre_max_max_index <nums[i] +i){
pre_max_max_index = nums[i]+i;
}
}
return jump_min;
}
};