![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode
我有一個夢想
IT
展开
-
LeetCode-449 序列化和反序列化二叉搜索树 (根据前序中序构造二叉树)
序列化是将数据结构或对象转换为一系列位的过程,以便它可以存储在文件或内存缓冲区中,或通过网络连接链路传输,以便稍后在同一个或另一个计算机环境中重建。设计一个算法来序列化和反序列化 二叉搜索树 。 对序列化/反序列化算法的工作方式没有限制。 您只需确保二叉搜索树可以序列化为字符串,并且可以将该字符串反序列化为最初的二叉搜索树。编码的字符串应尽可能紧凑。题解想到一个最笨的方法 就是根据二叉树的性质 二叉树可以根据前序遍历和中序遍历还原二叉树二叉树搜索树的中序遍历就是严格递增序列 这样我.原创 2022-05-12 09:22:18 · 187 阅读 · 0 评论 -
LeetCode-563 二叉树的坡度 ——树
题目题解题目的要求就是求各个节点左右子树和的差递归遍历二叉树并算出各个节点的子树和然后中序遍历下该二叉树 求各个节点左右子树差绝对值和代码class Solution {public: void InOrder(TreeNode *root, int &sum) { if (nullptr != root) { if (nullptr == root->left && nul...原创 2022-03-25 15:51:31 · 1462 阅读 · 0 评论 -
LeetCode-2038 如果相邻两个颜色均相同则删除当前颜色
如果相邻两个颜色均相同则删除当前颜色原创 2022-03-22 19:25:36 · 210 阅读 · 0 评论 -
LeetCode-160 相交链表
求两个相交的链表节点题解利用Map存节点 遍历链表 利用两个指针pa pb遍历两个链表 pa == pb 则返回当前节点 pa遍历完链表1则把pa指向链表2pb遍历完链表2则把pa指向链表1 当pa pb 遍历完两个链表都没有相同的节点 则为无交点 有交点必会在两则遍历过程中遇到 代码class Solution {public: ListNode *getIntersectionNode(ListNode *headA, ListNode *h...原创 2022-03-18 15:09:35 · 1013 阅读 · 0 评论 -
LeetCode-599 两个列表的最小索引总和
我的题解:map记录list1各字符串的位置遍历list2 在map找相同字符串的位置 记录最小距离最后遍历下list1或者list2获得最小距离字符串class Solution {public: vector<string> findRestaurant(vector<string>& list1, vector<string>& list2) { map<string, int>...原创 2022-03-14 19:11:38 · 561 阅读 · 0 评论 -
Leetcode- 剑指 Offer 53 - I 在排序数组中查找数字 I(二分)
统计一个数字在排序数组中出现的次数。题解有序数组查找 基本都是二分题目就是找数的下边界和上边界写了两个二分 一个找上边界 一个找下边界class Solution {public: int bin_search_right(int left, int right, vector<int> nums, int target) { while (left <= right) { int mid = (left + ..原创 2021-09-30 11:21:28 · 145 阅读 · 0 评论 -
Leetcode-剑指 Offer 45 把数组排成最小的数(排序)
输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。题解排序第一反应 字符串排序 然后从小到大拼接 然后发现 例如 1 10 就会变成 110 而最小值为101,所以不能简单的按照字典序排 需要根据 前后字符串拼接结果来排 sort 重写下cmpbool cmp(string s1, string s2) { return s1+s2 < s2+s1; }class Solution {...原创 2021-09-30 10:43:43 · 172 阅读 · 0 评论 -
Leetcode-517 超级洗衣机(贪心)
题解算出平均值 如果除不尽 直接-1 然后每台机器减去平均值 正的表示需要给出去多少 负的需要给他多少1、假设将机器分为A B组 A+B=0 A>0 则需要A放入B 反之B放入A2、模拟过程中 三者取最值 machine[i] abs(sum) ans. machine[i]不能取绝对值 负数是可以从两边给的 而正数(要给出去的数量)是只能一次给一个class Solution {public: int fin...原创 2021-09-30 10:30:06 · 239 阅读 · 0 评论 -
Leetcode-437 路径总和 III(深搜、前缀和)
题解一、暴力深搜访问每一个节点 用该节点作为第一个节点 向下深搜/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeN...原创 2021-09-28 14:57:52 · 159 阅读 · 0 评论 -
Leetcode-430 扁平化多级双向链表(二叉树遍历、链表)
题解这题把示例的图 转一下 因为不需要考虑前一个节点 发现其实是一颗二叉树 只要先序遍历节点就行 /*// Definition for a Node.class Node {public: int val; Node* prev; Node* next; Node* child;};*/class Solution {public: void preOrder(Node* node, ve...原创 2021-09-24 16:14:04 · 179 阅读 · 0 评论 -
Leetcode-162 寻找峰值(二分查找)
题解顺序查找 二分查找顺序查找 n的复杂度 但是题目要求logN 所以顺序不符合要求logN这种的一般第一反应是二分看了题解 解释为啥可以二分为什么二分查找大的那一半一定会有峰值呢?(即nums[mid]<nums[mid+1]时,mid+1~N一定存在峰值)首先已知 nums[mid+1]>nums[mid],那么mid+2只有两种可能,一个是大于mid+1,一个是小于mid+1,小于mid+1的情况,那么mid+1就是峰值,大于mid...原创 2021-09-15 14:21:02 · 200 阅读 · 0 评论 -
Leetcode-1894 找到需要补充粉笔的学生编号(前缀和 二分查找)
题解题目比较简单 每个人轮流 直到k减为负数普通方法 先求所有学生需要的粉笔数量 k%总数 就是最后一轮的粉笔数量 最后遍历减一遍就能算出答案 注意前面求需要粉笔总数的时候开long long型class Solution {public: int chalkReplacer(vector<int>& chalk, int k) { long long sum = 0; int n = ...原创 2021-09-10 10:23:24 · 158 阅读 · 0 评论 -
Leetcode-502 IPO (贪心,排序, 堆, 优先队列)
题解贪心 排序 堆 优先队列只要每次选取的时候保证 w >= 投资资本 选取符合要求的利润最大的即可先按投资资本从小到大排序每次在符合 w >= 投资资本 选取profits最大的那个如果两个for循坏 直接超时这个时候需要没有学习过的大顶堆 把符合要求 w >= 投资资本 的项目利润都放进堆 取堆顶就是每次取的最大利润 维护这个大顶堆 就不需要两个for循坏了大顶堆可以用优先队列来实现//升序队列priorit...原创 2021-09-08 11:23:06 · 212 阅读 · 0 评论 -
Leetcode-165 比较版本号(字符串处理)
题解字符串分割下 把每个点之前的整数比一下即可class Solution {public: int compareVersion(string version1, string version2) { int a[501]; int b[501]; memset(a, 0, sizeof(a)); memset(b, 0, sizeof(b)); int sum = 0; ...原创 2021-09-01 11:32:43 · 134 阅读 · 0 评论 -
Leetcode-1109 航班预订统计 (差分)
题解基本差分class Solution {public: vector<int> corpFlightBookings(vector<vector<int>>& bookings, int n) { vector<int> res; int cf[20002]; memset(cf, 0, sizeof(cf)); int m = bookin...原创 2021-09-01 10:52:23 · 155 阅读 · 0 评论 -
简单差分介绍
给出个数,给出个询问,每个询问给出,,,要求你在到上每一个值都加上,最后要求你输出每个位置上的大小,而只给你的时间范暴力超时线段树可能会超 如果限定int 线段树可能会超范围 因为我们只需要知道根节点大小 不是做区间查询差分可解差分过程模板题 Leetcode1109. 航班预订统计直接套用差分class Solution {public: vector<int> corpFlightBookings(vector<vector...原创 2021-09-01 10:49:26 · 166 阅读 · 0 评论 -
Leetcode-404 左叶子之和(深搜)
计算给定二叉树的所有左叶子之和。题解深搜遍历节点判定是否为左子树if (node->left && !node->left->left && !node->left->right)用了个全局sum记录左子树之和需要先遍历右子树 再判定是否为左叶子节点 再遍历左子树class Solution {public: int sum; int sumOfLeftLeaves(TreeNod...原创 2021-08-31 14:19:52 · 113 阅读 · 0 评论 -
Leetcode-257 二叉树的所有路径(深搜)
给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。叶子节点 是指没有子节点的节点。输入:root = [1,2,3,null,5]输出:["1->2->5","1->3"]示例 2:输入:root = [1]输出:["1"]提示:树中节点的数目在范围 [1, 100] 内-100 <= Node.val <= 100题解深度优先搜索深搜遍历每个点 然后把点放入string中 等访问...原创 2021-08-30 23:18:36 · 147 阅读 · 0 评论 -
Leetcode-111 二叉树的最小深度(递归)
给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。输入:root = [3,9,20,null,null,15,7]输出:2输入:root = [2,null,3,null,4,null,5,null,6]输出:5树中节点数的范围在[0, 10^5]内 -1000 <= Node.val <= 1000题解递归/深搜注意处理下子树为空时 只算另一个的子树深度而不是返回0...原创 2021-08-30 21:01:27 · 134 阅读 · 0 评论 -
Leetcode-100 相同的树(递归)
给你两棵二叉树的根节点p和q,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。输入:p = [1,2,3], q = [1,2,3]输出:true输入:p = [1,2], q = [1,null,2]输出:false输入:p = [1,2,1], q = [1,1,2]输出:false题解递归/深搜class Solution {public: bool isSameTre...原创 2021-08-30 20:35:29 · 134 阅读 · 0 评论 -
Leetcode-79 单词搜索(深搜)
题解深度优先搜索class Solution {public: int n, m; int lenw; int visit[201][201]; int dirx[4] = {0, 1, 0, -1}; int diry[4] = {1, 0, -1, 0}; bool exist(vector<vector<char>>& board, string word) { n...原创 2021-08-30 19:03:55 · 136 阅读 · 0 评论 -
Leetcode-112 路径总和(深搜/广搜)
题解DFS方法深度优先搜索二叉树, 到根节点和为目标就返回true 否则返回false因为是二叉树 所以不需要记录是否访问过 每个节点只会访问到一次class Solution {public: bool hasPathSum(TreeNode* root, int targetSum) { if (root == nullptr) return false; return DFS(root, 0, targetSum);...原创 2021-08-30 15:28:02 · 135 阅读 · 0 评论 -
Leetcode-113 路径总和 II(深搜/广搜)
题解相比1 这个题目要求输出和的路径广搜方法每搜一个节点 需要记录下 当前节点 路径和 所访问的节点列表自己开了一个Class 记录这三个东西 然后这个class入队class PreNode{ public: TreeNode *treeNode; int sum; vector<int> list; PreNode(TreeNode...原创 2021-08-30 16:57:39 · 127 阅读 · 0 评论 -
Leetcode-490 迷宫(深搜)
题解此题不同于以往的走迷宫问题,并非在每个格子都可以改变方向,只有碰到墙壁情况,停下来,才能换方向继续走,所以会比普通走迷宫多一段直线走的代码for (int i=0; i<4; i++) { int dx = x + dirx[i]; int dy = y + diry[i]; while(dx>=0 && dx<n && dy>=0 && dy<m &&am...原创 2021-08-30 14:34:37 · 574 阅读 · 0 评论 -
Leetcode-统计「优美子数组」
给你一个整数数组 nums 和一个整数 k。如果某个 连续 子数组中恰好有 k 个奇数数字,我们就认为这个子数组是「优美子数组」。请返回这个数组中「优美子数组」的数目。示例 1:示例 1:输入:nums = [1,1,2,1,1], k = 3输出:2解释:包含 3 个奇数的子数组是 [1,1,2,1] 和 [1,2,1,1] 。示例 2:输入:nums =...原创 2020-04-21 18:50:46 · 258 阅读 · 0 评论 -
摩尔投票法---leetcode 169 求众数
摩尔投票法每次从数组中选择两个不相等的元素进行相互抵消(删除),最后剩下的一个元素或几个相同的元素就是出现次数大于n/2的元素class Solution(object): def majorityElement(self, nums): """ :type nums: List[int] :rtype: int "...原创 2019-02-26 22:14:20 · 220 阅读 · 0 评论 -
爬楼梯-Leetcode-python
爬楼梯假设你正在爬楼梯。需要n阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定n是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶...原创 2019-03-08 14:34:34 · 209 阅读 · 0 评论 -
第一个错误的版本-Leetcode 278-python
你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。假设你有n个版本[1, 2, ..., n],你想找出导致之后所有版本出错的第一个错误的版本。你可以通过调用bool isBadVersion(version)接口来判断版本号version是否在单元测试中出...原创 2019-03-08 14:16:22 · 345 阅读 · 0 评论 -
二叉树最大深度(python)--leetcode
给定一个二叉树,找出其最大深度。递归求解:# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):# self.val = x# self.left = None# self.right = Nonecla...原创 2019-03-02 23:18:50 · 1256 阅读 · 0 评论 -
字符串中的第一个唯一字符-python-Leetcode 387
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。案例:s = "leetcode"返回 0.s = "loveleetcode",返回 2.我的思路:利用字典记录每个字母出现的次数O(N)Python代码:class Solution(object): def firstUniqChar(self, s): ...原创 2019-03-05 22:46:55 · 340 阅读 · 0 评论 -
整数反转-python Leetcode 7
整数反转python版本class Solution(object): def reverse(self, x): """ :type x: int :rtype: int """ if x < 0: flag = -1 else: ...原创 2019-03-05 21:31:00 · 167 阅读 · 0 评论 -
leetcode - 腾讯精选练习(50 题)- 最长公共前缀
采用比较暴力的方法,按第一个字符串一个个增加 得到最大的前缀注意空和最大字符串长度C:char* longestCommonPrefix(char** strs, int strsSize) { int i = 0, j, k; char current; int first_len; char str[10000] = {""}; char ...原创 2019-01-14 21:59:32 · 431 阅读 · 0 评论 -
二叉树的层次遍历-python实现-Leetcode
给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]层次遍历二叉树 并且每层需要分开保存思路:记录每层的最后一个位置...原创 2019-03-03 13:53:45 · 775 阅读 · 0 评论 -
买卖股票的最佳时机-Leetcode 121 - python
给定一个数组,它的第i个元素是一支给定股票第i天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 ...原创 2019-03-08 15:30:42 · 171 阅读 · 0 评论 -
二叉树的前序遍历-python实现-Leetcode
二叉树的前序遍历:递归:# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Soluti...原创 2019-03-03 16:12:42 · 2963 阅读 · 0 评论 -
二叉树的中序遍历-python实现-Leetcode
递归和非递归方法中序遍历二叉树 Leetcode题递归方法:# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):# self.val = x# self.left = None# self.right =...原创 2019-03-03 16:45:49 · 1372 阅读 · 0 评论 -
二叉树的后续遍历-python实现-Leetcode
递归和非递归两种方法:递归:# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solu...原创 2019-03-03 19:49:02 · 422 阅读 · 0 评论 -
二叉树的层次遍历 II-python-Leetcode 107
二叉树的层次遍历 IILeetcode 107此题为二叉树的层次遍历翻版,就是从底往上输出层次遍历结果其实就是把二叉树的层次遍历这题最后输出reverse()就OK了python代码:# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):# ...原创 2019-03-03 20:31:43 · 460 阅读 · 0 评论 -
从前序与中序遍历序列构造二叉树-Leetcode 105-python
从前序与中序遍历序列构造二叉树-Leetcode 105思路来自:https://blog.csdn.net/htt789/article/details/80164049脑子不好使思路:1.前序序列第一个为根结点,在中序序列中找到该结点位置,中序序列就分为左右子树结点2.前序序列除第一个结点,其余为左右子树结点,根据中序序列中左右子树各自的长度将前序序列划分了左右子树3....原创 2019-03-03 22:31:24 · 309 阅读 · 0 评论 -
对称二叉树-Leetcode 101-python
给定一个二叉树,检查它是否是镜像对称的。例如,二叉树[1,2,2,3,4,4,3]是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个[1,2,2,null,3,null,3]则不是镜像对称的: 1 / \ 2 2 \ \ 3 3递归方法:# Definition fo...原创 2019-03-15 11:11:16 · 237 阅读 · 0 评论