203.Remove Linked List Elements
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* removeElements(ListNode* head, int val) {
if (head == NULL)
{
return NULL;
}
ListNode *cur = head;
while (cur && cur->val == val)
{
ListNode *temp = cur;
cur = cur->next;
delete temp;
}
ListNode *res = cur;//完成对头部特殊情况的处理
while (cur)
{
while (cur->next && cur->next->val == val)
{
ListNode *temp = cur->next;
cur->next = cur->next->next;
delete temp;
}
cur = cur->next;
}
return res;
}
};
226.Invert Binary Tree
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
TreeNode* invertTree(TreeNode* root) {
if(root==NULL) return NULL;
TreeNode *temp = root->left;
root->left = root->right;
root->right = temp;
invertTree(root->left);
invertTree(root->right);
return root;
}
};
228.Summary Ranges
class Solution {
public:
vector<string> summaryRanges(vector<int>& nums) {
vector<string> res;
int lo = 0;
for(int i = 0; i < nums.size(); i++){
if(i == nums.size()-1 || nums[i] + 1 != nums[i+1]){
string tmp = to_string(nums[lo]);
if(i != lo) tmp += "->" + to_string(nums[i]);
res.push_back(tmp);
lo = i + 1;
}
}
return res;
}
};