Leetcode(无重复字符的最长子串;删除排序链表中的重复元素II;加一;最后一个单词的长度;相同的树)

1.无重复字符的最长子串

这题需要用到滑动窗口法,有许多问题都可以考虑使用滑动窗口法:https://www.geeksforgeeks.org/tag/sliding-window/

因为用c++,所以用到set容器:std::count

2.删除排序链表中的重复元素II

3.加一

 1 class Solution {
 2 public:
 3     vector<int> plusOne(vector<int>& digits) {
 4         int n=digits.size()-1;
 5         int add=1;
 6         for(int i=n;i>=0;){
 7             if(digits[i]==9){
 8                 digits[i]=0;
 9                 add=1;
10                 i--;
11             }
12             else{
13                 digits[i]++;
14                 return digits;
15             }
16         }
17         if(add==1)
18             digits.insert(digits.begin(),1);
19         return digits;
20     }
21 };

 4.最后一个单词的长度

 1 class Solution {
 2 public:
 3     int lengthOfLastWord(string s) {
 4         int right=s.size()-1;
 5         int length=0;
 6         for(int r=right;r>=0;){
 7             if(s[r]!=' '){
 8                 length++;
 9                 r--;
10             }
11             else{
12                 if(length==0)
13                     r--;
14                 else
15                     break;
16             }
17         }
18         return length;
19     }
20 };

 5.相同的树

/**
 * 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:
    bool isSameTree(TreeNode* p, TreeNode* q) {
    if (p == NULL && q == NULL) return true;
    if (q == NULL || p == NULL) return false;
    if (p->val != q->val) return false;
    return isSameTree(p->right, q->right) &&
            isSameTree(p->left, q->left);
    }
};

猜你喜欢

转载自www.cnblogs.com/gangyin/p/12641620.html