- 博客(25)
- 收藏
- 关注
原创 二叉树的最金公共祖先
class Solution {public: TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) { if (!root || root == p || root == q) return root; TreeNode *left = lowestCommonA...
2020-04-29 21:08:23
109
原创 二叉树的最大深度
递归class Solution {public: int maxDepth(TreeNode* root) { if(root==nullptr)return 0; return(max(maxDepth(root->left),maxDepth(root->right)))+1; }};
2020-04-29 20:38:32
135
原创 对称二叉树
递归class Solution{public: bool isSymmetric(TreeNode* root) { if(!root) return true; return m(root->left,root->right); } bool m(TreeNode*r1,TreeNode*r2) ...
2020-04-29 19:27:54
100
原创 相同的树
递归就很简单了class Solution {public: bool isSameTree(TreeNode* p, TreeNode* q) { if(!p&&!q) return true; if(!p||!q) return false; return (p->val==q->val&&...
2020-04-29 18:31:25
95
原创 子集
class Solution {public: vector<vector<int>> subsets(vector<int>& nums) { vector<vector<int>> ans; for (int num : nums) { int n = ans....
2020-04-20 18:03:13
117
原创 格雷编码
class Solution {public: vector<int> grayCode(int n) { vector<int> res; for(int i=0;i<=n;i++) { if(res.size()==0) {res.push_back(0)...
2020-04-20 17:36:13
91
原创 只出现一次的数字
class Solution {public: int singleNumber(vector<int>& nums) { int j=0; for(int i=0;i<nums.size();i++) { for(j=i+1;j<nums.size();j++) ...
2020-04-07 18:08:24
137
原创 反串字符串
class Solution {public: void reverseString(vector<char>& s) { int n=s.size(); for(int i=0;i<n/2;i++) { if(s[i]==s[n-1-i]) continue; //优化 ...
2020-04-07 17:42:58
563
原创 最长前缀
class Solution {public: string longestCommonPrefix(vector<string>& strs) { string r = strs.size() ? strs[0] : ""; for(auto s: strs){ while(s.substr(0, r.size...
2020-04-07 17:38:21
171
原创 滑动窗口最大值
class Solution {public:vector<int> maxSlidingWindow(vector<int>& nums, int k) { vector<int> res; if (nums.size() == 0) { return res; } ...
2020-03-26 16:05:16
85
原创 设计循环双端队列
用vector很好实现内存占用少但费时class MyCircularDeque {vector<int>deque;int max_size;public:/** Initialize your data structure here. Set the size of the deque to be k. */MyCircularDeque(int k) {max_si...
2020-03-25 23:26:19
75
原创 合并两个有序链表
合并两个有序链表递归方法class Solution {public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { if(l1==nullptr) return l2; if(l2==nullptr) return l1; if(l1-&g...
2020-03-12 13:41:04
75
原创 猜数游戏
题目:电脑产生一个0到100之间的随机数字,要求用户来猜,电脑会提示用户猜大了还是小了,如果输入的不是数字,电脑会提醒你输入无效。#include<iostream>using namespace std;int main(){ int guess = rand() % 100 + 1; int m; for (int i = 1;i < 101;i++) { ...
2020-03-04 17:26:33
197
原创 买股票最佳时期
买股票最佳时期方法一:暴力法class Solution {public: int maxProfit(vector<int>& prices) { int max=INT_MIN; int sum=0; int len=int(prices.size()); if(len<2) ...
2020-02-29 23:21:59
170
原创 合并两个有序数组
题目给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。方法一:暴力法 先合并再排序class Solution {public: void me...
2020-02-26 22:28:09
202
原创 最大子序和
题目描述给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。方法一:暴力法class Solution {public: int maxSubArray(vector<int>& nums) { int max=INT_MIN; int len=int(nums.size()); ...
2020-02-26 21:44:44
130
原创 删除元素
题目给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。方法一运行比较快也比较简单的class Solution {public: int removeElement(vec...
2020-02-23 15:53:27
111
原创 删除数组中的重复项
题目给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。方法一简单粗暴的方法class Solution {public: int removeDuplicates(vector<int>& nums) { if...
2020-02-23 15:45:57
223
原创 两数之和
#两数之和##题目给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。###方法一class Solution {public: vector<int> twoSum(vector<int>& nums...
2020-02-23 15:29:31
83
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人