/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
* };
*/classSolution{public:int ans =0;intdiameterOfBinaryTree(TreeNode* root){dfs(root);return ans;}intdfs(TreeNode* root){if(!root)return0;int l =dfs(root->left), r =dfs(root->right);
ans =max(ans, l + r);returnmax(l, r)+1;}};
Leetcode560. 和为K的子数组
classSolution{public:intsubarraySum(vector<int>& nums,int k){int n = nums.size();
vector<int>s(n +1);for(int i =1; i <= n; i ++) s[i]= s[i -1]+ nums[i -1];
unordered_map<int,int> hash;
hash[0]=1;int res =0;for(int i =1; i <= n; i ++){
res += hash[s[i]- k];
hash[s[i]]++;}return res;}};
Leetcode581. 最短无序连续子数组
classSolution{public:intfindUnsortedSubarray(vector<int>& nums){int l =0, r = nums.size()-1;while(l +1< nums.size()&& nums[l +1]>= nums[l]) l ++;if(l == r)return0;while(r -1>=0&& nums[r -1]<= nums[r]) r --;for(int i = l +1; i < nums.size(); i ++)while(l >=0&& nums[l]> nums[i])
l --;for(int i = r -1; i >=0; i --)while(r < nums.size()&& nums[r]< nums[i])
r ++;return r - l -1;}};