Leetcode
Amberfd
这个作者很懒,什么都没留下…
展开
-
剑指 Offer 36. 二叉搜索树与双向链表
二叉树为中序遍历递增序列。解法一/*// Definition for a Node.class Node {public: int val; Node* left; Node* right; Node() {} Node(int _val) { val = _val; left = NULL; right = NULL; } Node(int _val, Node* _left, ...原创 2021-05-27 15:34:32 · 139 阅读 · 0 评论 -
剑指 Offer 51. 数组中的逆序对
解法一 归并排序速度比较慢class Solution {public: int merge(vector<int>& num,int l, int r){ if(l>=r) return 0; int mid = l+r>>1;//r右移一位 int res = merge(num,l,mid)+merge(num,mid+1,r); int i= l,j=mid+1; v.原创 2021-05-27 15:06:58 · 142 阅读 · 0 评论 -
剑指 Offer 34. 二叉树中和为某一值的路径
解法一dfs两边遍历,但是不知道为什么要root为终节点时才停止,但是如果root不是最下面的节点,会报错class Solution {public: vector<int> path; vector<vector<int>> ans; void dfs(TreeNode* root,int sum){ if(!root) return; path.push_back(root->val); .原创 2021-04-27 16:58:29 · 131 阅读 · 0 评论 -
剑指 Offer 43. 1~n 整数中 1 出现的次数
解法一暴力遍历会超时,找规律class Solution {public: int countDigitOne(int n) { int count = 0; long i = 1;//指当前遍历的位数,1指个位,10指十位 while(n/i!=0){ long high = n/(10*i);//将当前位置的所有高位都存在high中 long cur = (n/i)%10;//将当前位存在c.原创 2021-04-27 16:06:02 · 87 阅读 · 0 评论 -
剑指 Offer 68 - II. 二叉树的最近公共祖先
解法一 递归class Solution {public: TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) { if(root == nullptr || root == p || root ==q) return root; TreeNode* left = lowestCommonAncestor(root->left,p,q); Tre.原创 2021-04-27 12:09:06 · 96 阅读 · 0 评论 -
剑指 Offer 68 - I. 二叉搜索树的最近公共祖先
解法一是有序的二叉树,左中右大小顺序。/** * 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*.原创 2021-04-23 14:58:29 · 86 阅读 · 0 评论 -
剑指 Offer 67. 把字符串转换成整数
解法一存在long//使用longclass Solution {public: int strToInt(string str) { int i = 0, flag = 1;//默认flag为正数 long res = 0; while(str[i]==' ') i++; if(str[i] == '-') flag = -1; if(str[i] == '-' || str[i] == '+' ) i++;.原创 2021-04-13 23:50:00 · 75 阅读 · 0 评论 -
剑指 Offer 14- II. 剪绳子 II
解法一贪心算法,考虑数据溢出的问题class Solution {public: int cuttingRope(int n) { if(n<=3) return n-1; long res =1; while(n>4){ n = n-3; res = res*3%(1000000007); } res = res*n%(1000000007); .原创 2021-04-13 23:22:23 · 90 阅读 · 0 评论 -
剑指 Offer 14- I. 剪绳子
解法一动态规划class Solution {public: int cuttingRope(int n) { if(n<=3) return n-1; vector<int> dp(n+1); dp[1] = 1; dp[2] = 2; dp[3] = 3;//当n大于3时,<=3的部分可以不继续拆分,它本身的长度作为dp值 for (int i = 4; i <=.原创 2021-04-13 23:16:00 · 78 阅读 · 0 评论 -
剑指 Offer 35. 复杂链表的复制
解法一使用Hash建立映射表class Solution {public: Node* copyRandomList(Node* head) { if(head==nullptr) return nullptr; Node* cur=head; unordered_map<Node*,Node*> map; while(cur!=nullptr){ map[cur]=new Node(cur-.原创 2021-04-13 16:21:42 · 68 阅读 · 0 评论 -
剑指 Offer 13. 机器人的运动范围
解法一广度优先搜索,使用pair,以及队列queue,先进先出//广度优先搜索class Solution { int get(int x){ int res = 0; for ( ; x; x/=10) { res+=x % 10; } return res; }public: int movingCount(int m, int n, int k) { .原创 2021-04-13 16:16:54 · 129 阅读 · 3 评论 -
剑指 Offer 19. 正则表达式匹配
解法一class Solution {public: bool isMatch(string s, string p) { int slen = s.size(), plen = p.size(); vector< vector<bool>> dp(slen+1,vector<bool>(plen+1,false)); dp[0][0] = true; //初始化首行 for (.原创 2021-04-07 15:55:49 · 78 阅读 · 0 评论 -
剑指 Offer 04. 二维数组中的查找
解法一二叉搜索树,从左下节点开始进行判断class Solution {public: bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) { int i = matrix.size()-1; int j = 0; while (i>=0 && j<matrix[0].size()){ .原创 2021-02-12 15:15:37 · 96 阅读 · 0 评论 -
C++ leetcode刷题复盘7: merge two sorted lists
解法参考:https://www.cnblogs.com/grandyang/p/4086297.html相关知识:1.链表原创 2021-01-12 12:00:55 · 118 阅读 · 0 评论 -
C++ leetcode刷题复盘6: valid parentheses
参考资料:相关知识:解法一原创 2021-01-11 16:24:07 · 88 阅读 · 0 评论 -
C++ leetcode刷题复盘5: longest common prefix
参考资料:相关知识:1.解法一原创 2021-01-10 14:45:13 · 83 阅读 · 0 评论 -
C++ leetcode刷题复盘4: roman_to_int
参考资料:https://blog.csdn.net/magicdoubi/article/details/86561355相关知识:1.string数据调用2.break用法解法一有问题还没改class Solution {public: int romanToInt(string s) { char r[7]={'I','V','X','L','C','D','M'}; int n[7]={1,5,10,50,100,500,1000}; int res =原创 2021-01-10 12:44:42 · 121 阅读 · 0 评论 -
C++ leetcode刷题复盘3: palindrome number
参考资料:https://www.cnblogs.com/whale90830/p/10531209.html相关知识:1.数值转字符串to_string()函数2.return直接强制结束函数解法一使用字符串转换符to_string,注意return可以提前终止函数。class Solution {public: bool isPalindrome(int x) { if (x<0){return false;} string x1 =原创 2021-01-09 15:30:30 · 112 阅读 · 0 评论 -
C++ leetcode刷题复盘2: reverse
参考资料:https://www.cnblogs.com/grandyang/p/4125588.html相关知识:1.INT_MAX2.除法与取余3.三目运算符解法一class Solution {public: int reverse(int x) { int result=0; while (x!=0){ if(abs(result) > INT_MAX/10) return 0;//保证数据翻转过来不会超过最大数原创 2021-01-08 14:34:40 · 119 阅读 · 0 评论 -
C++ leetcode刷题复盘1: two sum
代码参考:https://www.cnblogs.com/grandyang/p/4130379.html相关学习基础知识参考:1.C/C++ 定义向量、赋值和使用2.unordered_map原理3.unordered_map使用解法1使用暴力解法,相关有vector的定义与赋值。class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { ve原创 2021-01-07 20:52:19 · 329 阅读 · 0 评论