![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
codetop
cormacyoung
这个作者很懒,什么都没留下…
展开
-
百度codetop-4
1、从前序与中序遍历序列构造二叉树 根据一棵树的前序遍历与中序遍历构造二叉树。 class Solution { public: unordered_map<int, int> map; int preindex; TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) { int n = inorder.size(); for(int i = 0; i < n;原创 2021-07-10 17:26:00 · 162 阅读 · 0 评论 -
百度codetop-3
1、爬楼梯 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? class Solution { public: int climbStairs(int n) { int p = 0, q = 0, r = 1; while(n--){ p = q; q = r; r = p + q; } return r; } }; 2、最小的k个数 输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、原创 2021-07-10 15:47:32 · 213 阅读 · 0 评论 -
百度codetop-2
1、有效括号 给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。 class Solution{ public: bool isValid(string s) { int len = s.size(); if(len % 2 == 1) return false; unordered_map<char, int> map{{'(', 1}, {'[', 2}, {'{', 3}, {')', 4}, {']', 5}, {'}原创 2021-07-04 14:18:49 · 128 阅读 · 0 评论 -
百度 codetop
1、反转链表 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 class Solution { public: ListNode* reverseList(ListNode* head) { ListNode* cur = head; ListNode* pre = nullptr; while(cur){ ListNode* tmp = cur->next; cur->next = pre; pre = cur; cur = tm原创 2021-07-03 20:03:35 · 326 阅读 · 0 评论 -
2021-06-15
刷题第九天 1、复原IP地址 给定一个只包含数字的字符串,用以表示一个 IP 地址,返回所有可能从 s 获得的 有效 IP 地址 。你可以按任何顺序返回答案。 有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 ‘.’ 分隔。 例如:“0.1.2.201” 和 “192.168.1.1” 是 有效 IP 地址,但是 “0.011.255.245”、“192.168.1.312” 和 “192.168@1.1” 是 无效 IP 地址。 class Sol原创 2021-06-17 01:25:03 · 80 阅读 · 0 评论 -
2021-06-14
刷题第八天 1、最长重复子数组 给两个整数数组 A 和 B ,返回两个数组中公共的、长度最长的子数组的长度。 class Solution { public: int findLength(vector<int>& A, vector<int>& B) { int n = A.size(), m = B.size(); vector<vector<int>> dp(n + 1, vector<int>(m + 1,原创 2021-06-14 16:03:07 · 32 阅读 · 0 评论 -
2021-06-09
刷题第七天 1、最长递增子序列 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。 class Solution { public: int lengthOfLIS(vector<int>& nums) { if(nums.size() == 0) return 0; vector<int>原创 2021-06-09 23:45:47 · 63 阅读 · 2 评论 -
2021-06-01
刷题第六天 1、x的平方根 实现 int sqrt(int x) 函数。 class Solution { public: int mySqrt(int x) { int l = 0, r = x, res = 0; while(l <= r){ int mid = (l + r) / 2; if((long long)mid * mid <= x){ res = mid; l = mid + 1; } else r = mid -原创 2021-06-02 00:20:58 · 47 阅读 · 0 评论 -
2021-05-31
刷题第五天 1、最长回文子串 给你一个字符串 s,找到 s 中最长的回文子串。 class Solution { public: int getsub(int l, int r, string s){ while(l >= 0 && r < s.size() && s[l] == s[r]){ l--; r++; } return r - l + 1; } string longestPalindrome(string s) {原创 2021-05-31 23:58:52 · 93 阅读 · 2 评论 -
2021-05-30
刷题第四天 1、螺旋矩阵 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 class Solution { public: vector<int> spiralOrder(vector<vector<int>>& matrix) { vector<int> res; if(matrix.size() == 0) return res; int rows = matrix.size()原创 2021-05-30 15:16:40 · 38 阅读 · 0 评论 -
2021-05-28
刷题第三天 1、字符串相加 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。 class Solution { public: string addStrings(string num1, string num2) { int i = num1.size() - 1, j = num2.size() - 1, add = 0; string res = ""; while(i >= 0 || j >= 0 || add != 0){ int x =原创 2021-05-29 15:58:46 · 34 阅读 · 0 评论 -
2021-05-27
刷题第二天 1、两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 class Solution{ public: vector<int> twoSum(vector<int>& nums, int target) { vector<int>原创 2021-05-28 00:27:02 · 34 阅读 · 0 评论 -
2021-05-26
刷题第一天 1、买卖股票的最佳时机 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。 笔记: 找出数组中的最小值,依次与其他值进行比较,差值最大的则为最大利润。 class Solution{ public: int maxProfit(vec...原创 2021-05-26 22:07:03 · 179 阅读 · 0 评论