跳至主要内容

博文

68. 文本左右对齐

class Solution { public:     vector<string> fullJustify(vector<string>& words, int L) {         vector<string> ans;         const int n = words.size();         for (int i = 0; i < n;) {             int num = 0, len = 0;             while (i + num < n && words[i + num].size() + len <= L - num) {                 len += words[i + num].size();                 ++num;             }             string tmp = words[i];          ...

40. 组合总和 II

class Solution { public:     vector<vector<int>> combinationSum2(vector<int>& candidates, int target) {         vector<vector<pair<int, vector<int>>>> dp;         for (int i = 0; i < candidates.size(); i++)         {             vector<pair<int, vector<int>>> tmp;             int cur = candidates[i];             if (i > 0)             {                 vector<pair<int, vector<int>>> & pre = dp[i - 1];               ...

124. 二叉树中的最大路径和

/**  * 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:     int maxPathSum(TreeNode* root) {                 if (root->left != 0 && root->right != 0)         {             int l = maxPathSum(root->left);             int r = maxPathSum(root->right);             int l1 = maxPathSum3(root->left);             int r1 = maxPathSum3(root->right);  ...

336. 回文对

class Solution { public:     bool isPalindrome(string word, int left, int right) {         while (left < right)             if(word[left++] != word[right--]) return false;         return true;     }         string reverse(string tmp)     {         string ret;         for (int i = tmp.length() - 1; i >= 0; i--)         {             ret.push_back(tmp[i]);         }         return ret;     }         vector<vector<int>> palindromePairs(vector<string>& words) {       ...

386. 字典序排数

class Solution { public:     vector<int> lexicalOrder(int n) {         vector<int> ret;         lexicalOrder2(n, 0, ret);         return ret;     }         void lexicalOrder2(int n, int pre, vector<int> & ret)     {         if (ret.size() >= n)         {             return;         }                 for (int i = (pre==0?1:0);i<=9;i++)         {             if ((long long)pre*10+i <= (long long)n)             { ...

242. 有效的字母异位词

class Solution { public:     bool isAnagram(string s, string t) {         char data1[26] = {0};         char data2[26] = {0};                 if (s.length() != t.length())             return false;                 for (int i = 0; i < s.length(); i++)         {             data1[s[i] - 'a']++;         }         for (int i = 0; i < t.length(); i++)         {             data2[t[i] - 'a']++;         }     ...

344. 反转字符串

class Solution { public:     void reverseString(vector<char>& s) {         int i = 0;         int j = s.size() - 1;         while (i < j)         {             char tmp = s[i];             s[i] = s[j];             s[j] = tmp;             i++;             j--;         }     } };