2020_12_21 LeetCode刷题

两个月搞定面试算法【小白leetcode刷题训练】【python专场】 前言 刷题顺序来自极客时间,共分为8个专题,每周1个,两个月认真刷完基本大厂面试OK(我说的是认真刷!只抄题解不算)。截止到博主结束秋招时只刷到第5个专题,也基本够用了。也就是说认真刷题的话一个月就可以有offer入手了。 当然现在BAT的笔试做起来还是觉得费力,笔试是真的难啊! 博主是python选手,题解都是python写的。有问题欢迎交流,共同进步。 文章内附leetcode链接,直接点链接去做就行。同类型的尽量整理到一起了,也方便自己今后复习。 推荐五遍刷题法 1、读题+思考,10分钟内没思路,直接 阅读详情

今日刷题六道,六道题目都是树类型的题目,最后一到题目在15min内实现过程中出现了一些差错,其他的题目都是在15min内完成。要准备考试了,只能在复习间隙休息的时间刷题放松,争取在考试前能够补完简单难度的题目。

501. 二叉搜索树中的众数
递归回溯题。没有达成最优解,使用了额外的空间,递归统计各个数,同时记录得出最多的次数,之后直接遍历哈希表将出现次数最多的数存放即可。

/**
 * 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:
    int maxnum = -1;
    map<int,int> p;
    vector<int> findMode(TreeNode* root) {
        maxnum = -1;
        vector<int> ans;
        dfstree(root);
        for(map<int,int>::iterator it1 = p.begin();it1 != p.end();  it1++) {
            if(it1->second == maxnum) {
                int ans1 = it1->first;
                ans.push_back(ans1);
            }
        }
        return ans;
    }
    void dfstree(TreeNode* root) {
        if(root == nullptr) 
            return ;
        int num1 = root->val;
        p[num1] += 1;
        maxnum = max(maxnum,(int)p[num1]);
        dfstree(root->left);
        dfstree(root->right);
    }
};

530. 二叉搜索树的最小绝对差
递归回溯题。首先遍历树,记录所有节点的数值,之后排序,相邻两个数相减比较求取最小值。

/**
 * 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:
    int getMinimumDifference(TreeNode* root) {
        vector<int> number1;
        dfsTree(root,number1);
        sort(number1.begin(),number1.end());
        int len1 = number1.size();
        int ans = 0;
        for(int i = 1; i < len1; i++) {
            if(i == 1)
                ans = number1[i] - number1[i-1];
            else
                ans = min(ans, number1[i] - number1[i-1]);
        }
        return ans;
    }
    void dfsTree(TreeNode* root,vector<int>& nums) {
        if(root == nullptr)
            return;
        nums.push_back(root->val);
        dfsTree(root->left,nums);
        dfsTree(root->right,nums);
    }
};

543. 二叉树的直径
递归回溯题。根据给定的样例数据,认为应该是根节点的左子树最大深度+根节点的右子树最大深度,但是其直径可能不经过根节点,所以需要重新考虑,即在遍历的过程中,判定该节点的左子树最大深度+右子树的最大深度是否为最大值,如果为最大值,则更新进行记录,说明当前值为直径,否则继续进行遍历。最后返回最大的数值结果就是直径。

/**
 * 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:
    int ans = 0;
    int diameterOfBinaryTree(TreeNode* root) {
        if(root == nullptr)
            return 0;
        ans = 0;
        int sum1 = deepth(root->left);
        int sum2 = deepth(root->right);
        ans = max(ans,sum1 + sum2);
        return ans;
    }
    int deepth(TreeNode* root) {
        if(root == nullptr)
            return 0;
        int sum1 = deepth(root->left);
        int sum2 = deepth(root->right);
        ans = max(ans,sum1 + sum2);
        return max(sum1,sum2) + 1;
    }
};

559. N 叉树的最大深度
递归回溯题。从二叉树变成了N叉树,在递归过程中,每一个子树都要进行深度的求取然后比较大小求取最大值,最后返回输出即可求得答案。

/*
// Definition for a Node.
class Node {
public:
    int val;
    vector<Node*> children;

    Node() {}

    Node(int _val) {
        val = _val;
    }

    Node(int _val, vector<Node*> _children) {
        val = _val;
        children = _children;
    }
};
*/

class Solution {
public:
    int maxDepth(Node* root) {
        if(root == nullptr)
            return 0;
        int ans = deepth(root);
        return ans + 1;
    }
    int deepth(Node* root) {
        if(root == nullptr)
            return 0;
        int ans = 0, len1 = root->children.size();
        for(int i = 0; i < len1; i++)
            ans = max(ans, deepth(root->children[i]) + 1);
        return ans;
    }
};

563. 二叉树的坡度
递归回溯题。明确在回溯的过程中,返回当前子树的所有节点的和的数值,之后在回溯函数中,先分别计算左子树和右子树的各个节点的和,再计算坡度,最后返回以当前节点为根的所有节点的和,即得出答案。当前节点为nullptr则返回数值0。

/**
 * 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) {}
 * };
 */
class Solution {
public:
    int ans = 0;
    int findTilt(TreeNode* root) {
        ans = 0;
        int z = SumofTree(root);
        return ans;
    }
    int SumofTree(TreeNode* root) {
        if(root == nullptr)
            return 0;
        //计算左子树和
        int sum1 = SumofTree(root->left);
        //计算右子树和
        int sum2 = SumofTree(root->right);
        //计算坡度
        ans += abs(sum1 - sum2);
        //返回左右子树的和
        return root->val + sum1 + sum2;
    }
};

572. 另一个树的子树
递归回溯题。首先使用一个递归函数进行树的节点遍历,当树的当前节点的数值等于目标树根节点数值时,再调用另一个递归函数进行判定,对于每一个节点进行递归判定,判断是否相同,最后返回最终的结果即可。

/**
 * 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) {}
 * };
 */
class Solution {
public:
    bool ans = false;
    bool isSubtree(TreeNode* s, TreeNode* t) {
        ans = false;
        dfsTree(s,t);
        return ans;
    }
    void dfsTree(TreeNode* s,TreeNode* t) {
        if(ans)
            return;
        if(s == nullptr)
            return;
        if(s->val == t->val)
            ans = dfsSubTree(s,t);
        dfsTree(s->left,t);
        dfsTree(s->right,t);
    }
    bool dfsSubTree(TreeNode* s,TreeNode* t) {
        if(s == nullptr && t == nullptr)
            return true;
        if(s == nullptr && t != nullptr)
            return false;
        if(s != nullptr && t == nullptr)
            return false;
        bool ans = true;
        if(s != nullptr && t != nullptr)
            ans = (s->val == t->val);
        return dfsSubTree(s->left,t->left) && dfsSubTree(s->right,t->right) && ans;
    }
};
分享刷LeetCode算法题pdf笔记,看完你就是面试官 废话不多说,直接上算法刷题笔记 百度网盘地址链接:https://pan.baidu.com/s/1Z0j_F4KSJE8q9j5Rs8p6Lg 提取码:you1 关于算法刷题的困惑和疑问也经常听朋友们提及。这份笔记里面共包含作者刷LeetCode算法题后整理的数百道题,每道题均附有详细题解过程。很多人表示刷数据结构和算法题效率不高,甚是痛苦。有了这个笔记的总结,对校招和社招的算法刷题帮助之大不言而喻,果断推荐给大家。 第二章算法专题 Array Backtracking Bina... 阅读详情

相关推荐

ArcGIS栅格拼接全攻略:从核心原理到色彩平衡与大数据处理

在GIS数据处理中,栅格拼接是一项基础且关键的操作,其本质是将多幅具有重叠区域的栅格图像无缝整合为一张完整地图。该技术涉及空间参考统一、像元对齐与色彩融合等核心原理,是构建连续地理空间数据的基石。其技术价值在于保障数据完整性、提升可视化效果,并为后续的空间分析提供可靠底图。在遥感影像处理、数字高程模型构建及地图制图等应用场景中,高质量的拼接成果至关重要。本文聚焦于ArcGIS平台,深入解析其栅格拼接工具,并针对常见的色彩不一致与大数据量处理难题,提供了基于**色彩平衡**和**金字塔**优化的实战解决方案,

weixin_33158887的博客 262

关于leetcode刷题详细介绍

  虽然刷题一直饱受诟病,不过不可否认刷题确实能锻炼我们的编程能力,相信每个认真刷题的人都会有体会。现在提供在线编程评测的平台有很多,比较有名的有 hihocoder,LintCode,以及这里我们关注的 LeetCode。 LeetCode收录了许多互联网公司的算法题目,被称为刷题神器,我虽然早有耳闻,不过却一直没有上面玩过。   据了解,LeetCode 是一个非常棒的 OJ(Online J...

智者之家 9万+

LEF文件介绍及其生成

介绍LEF文件及其生成方法

weixin_43249158的博客 3万+

2020/12/16 leetcode刷题

Leetcode 打卡738.单调递增的数字20 有效的括号 738.单调递增的数字 解题思路: 利用贪心算法:此题从后向前遍历;一旦出现strNum[i - 1] > strNum[i]的情况(非单调递增),先让strNum[i - 1]–,然后strNum[i]给为9; 代码实现 class Solution { public: int monotoneIncreasingDigits(int N) { //to_string 将数字转换为字符串 string

ZZcppc的博客 256

R语言分段回归

1.利用虚拟变量进行线性回归 (MEdata.csv的数据来源:https://github.com/ChenQihome9/优快云-Data-Library/blob/master/MEdata.csv) 问题13:针对TAX~GDP,使用分段回归方法,找到其回归方程。编程,并根据程序结果叙述如下几方面问题:(1)分几段最佳?(不超过5段内)(2)分段位置定在哪儿最佳?(3)写出最佳方...

ChenQihome9的博客 1万+

stm32教程之三重ADC交错采样

ps:本文基于stm32F407ZGT6单片机 stm32F4单片机单通道采集的最大采样率为2.4M,所以有时会难以满足较高频率的采样,于是查阅芯片手册,发现stm32F4支持多重ADC采集,利用每个通道的转换时间,错位采样,从而提高采样率,最大把采样率开到2.4*3=7.2M. (去年初学ADC时研究的,基于cube和HAL库的三重ADC交错采样参考资料不多,我也是研究了一段时间,写下这篇博客希望可以帮助到更多人。) 示意图如下: 以下是官方例子的说明, In this ex...

weixin_52178036的博客 8875

2020.12.21-2020.12.27 leetcode刷题总结(拓扑排序&蓄水池抽样&二叉搜索树&线段树)

拓扑排序 一.题目列表 1.课程表 题目描述: 你这个学期必须选修 numCourse 门课程,记为 0 到 numCourse-1 。 在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们:[0,1] 给定课程总量以及它们的先决条件,请你判断是否可能完成所有课程的学习? 示例: 输入: 2, [[1,0]] 输出: true 解释: 总共有 2 门课程。学习课程 1 之前,你需要完成课程 0。所以这是可能的。 题解: 2.课程表 II 题目描述:

weixin_43164582的博客 262

SAP Fiori Launchpad 上看不到任何 tile 应该怎么办?

中心UI组件是一个框架,为所有SAPFiori应用程序提供公共基础设施SAPFiorilaunchpad是所有SAPFioriUI的基础,并为SAPFiori应用程序提供基本功能,如登录,界面大小,应用程序之间的导航,和基于角色的应用程序目录。ABAP前端服务器包含所有基础设施组件,用于为客户端生成SAPFiori应用程序特定的UI,并与SAPBusinessSuite后端系统通信。SAPFiori应用程序的处理过程如下首先,客户端加载SAPFiori应用程序的界面。...

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 941

LeetCode刷题的一点个人建议和心得

1. 为什么我们要刷LeetCode? LeetCode是面向找IT行业相关公司开发岗/算法岗的一个算法题库网站,想去BAT等大厂,笔试和面试中的大部头都要考你算法题的解题技巧和编码能力。然而,对于很多大一大二在校的本科同学,甚至包含一部分研究生同学,都会问一句:LeetCode是啥?该部分同学一般都是在临近找工作时,寻找相关经验贴才知道原来还有这样的一个神奇的网站。随着IT相关专业和大多数转专业同学都瞄准了互联网方向的岗位,以及计算机学科招生增多和专业的热门化(高考专业录取收分越来越高),...

m0_50180963的博客 3954

基于YOLOv8的表面裂痕等缺陷检测:深度学习与UI界面的实践

本文详细介绍了如何使用YOLOv8进行表面裂痕等缺陷检测,并结合图形用户界面展示检测结果。通过YOLOv8的强大能力,我们可以实现高效、准确的表面缺陷检测,提升工业产品的质量控制水平。未来,随着深度学习技术和数据集的不断发展,表面缺陷检测的精度和速度将不断提升,应用领域也将进一步拓展。希望本文的实践能够为深度学习在工业检测领域的应用提供一些启示。

YOLO 549

RH850系列芯片深度剖析 1.5-链接(ld)文件解析

基础编译过程分为四个阶段:预处理(Preprocessing)、编译(Compilation)、汇编(Assembly)、链接(Linking)。执行这四个阶段的程序(预处理器、编译器、汇编器、和链接器)一起构成了编译系统。CONSTANTS接下来的内存空间定义部分会使用这些常量来定义内存空间的范围,理论上来说不定义常量也没有影响,直接用魔鬼数字代替,定义常量的主要目的就是方便理解以及方便修改;从示例中可以看出,常量的值可以为16进制或者10十进制,而且10进制支持数量级单位(k级,M级);

本博客专注于嵌入式软件领域技术分享。 1427

LeetCode解题汇总目录

此篇为学习完《数据结构与算法之美》后,在LeetCode刷题的汇总目录,方便大家查找(Ctrl+Find),一起刷题,一起PK交流!如果本文对你有帮助,可以给我点赞加油! Updated on 2022.6.12刷题可以按照不同的专题进行,便于加强某个知识点的理解。另有《剑指Offer》面试题(更新完毕)、《程序员面试金典》面试题(更新完毕)、LintCode代码能力测试CAT。LeetCode MySQL 数据库解题目录点击访问 我的 LeetCode 主页我的 GitHub 主页注:本文超过字数限制,

Michael是个半路程序员 8万+

8.19华为OD机试真题 新系统 - 基站低能耗时段统计 (Java/Py/C/C++/Js/Go)

8.19华为OD机试真题 新系统 - 基站低能耗时段统计 (Java/Py/C/C++/Js/Go)

算法大师! 1142

LeetCode刷题笔记整理Python

文章目录前言一、数组1. 两数之和2. 寻找两个正序数组的中位数3. 盛最多水的容器4. 三数之和5. 打家劫舍系列打家劫舍Ⅰ打家劫舍Ⅱ打家劫舍Ⅲ6. 最大矩形和正方形最大矩形最大正方形7. 接雨水8. 不同路径9. 爬楼梯10. 和为K的子数组11. 合并两个有序数组12. 合并区间13. 最短无序连续子数组14. 最小路径15. 岛屿数量16. 任务调度器17. 每日温度18. 前 K 个高频元素19. 组合总和系列组合总和组合总和 II20. 全排列问题全排列的下一个排列写出所有的全排列 I写出所有

weixin_45517168的博客 2346

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

力扣(LeetCode)刷题,简单题(第21期)

力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升。

不脱发的程序猿 3600

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

2020力扣刷题

文章目录一、二维数组中的搜索1、剑指42、力扣74 一、二维数组中的搜索 1、剑指4 数组从左到右,从上到下升序排列。 思路:最快的方法是排除肯定不存在target的区域,从右上角的数开始比较。 2、力扣74 数组从左到右升序,下一行的第一个数大于上一行最后一个数 思路:一是直接采用二分算法,将原二维数组拉直,采用下标索引,知道找到target;二是利用剑指的思想,从行列的角度出发,排除不存在的区域。 ...

qq_43281895的博客 3334

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

2020-12-20leetcode刷题总结

leetcode刷题总结,不定时更新!

LeichunHong的博客 321

aojiao 武 的leetcode刷题记录(只有记录)

leetcode刷题记录 2020.06.07 现在是2020年6月7日21:49:02,距离我开始刷leetcode的日期2020年5月8号已经差不多过了一个月了,刚刚刷到120道左右。 考虑到最近在考试周,这个速度勉强能接受吧。 为了给你自己留一个记录,今天开始记录刷题的进度,也可以稍微写一点感悟。 当然,记录的更重要的目的是督促自己一直坚持下去,这个是督促自己进步的动力。 刷leetcode的目的,一是巩固基础的数据结构知识,二是增强自己的代码实现能力,三是提高自己的编程规范性,四是给自己无聊的生活加

ao_jiao_322的博客 1832

LeetCode的刷题顺序

知乎:https://www.zhihu.com/question/36738189/answer/1870171349 如果想从事算法相关,LeetCode必刷,没有捷径。 我从**2020.04月开始刷LeetCode,花了些时间找了118道经典题目,前后反反复复刷了三遍之后,**到2020下半年面对大厂的coding才开始不怯场。在此之前,几乎没刷过LeetCode,数据结构掌握也不是很深刻。 LeetCode是我面试准备中跨越的第一个难题,**当我刷完这118道经典题目以后,LC在面试中逐渐从失分项

weixin_42926836的博客 1240

2020/12/17leetcode刷题

2020/12/07 21.合并两个有序链表 leetcode21 解题思路: 解法1,递归 时间复杂度为O(M+N);空间复杂度为O(m+n); class Solution { public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { if (l1 == nullptr) { return l2; } else if (l2 == nullptr) {

ZZcppc的博客 201

leetcode刷题

因此你决定统计访问时长区间分别为 “[0-5>”,“[5-10>”,“[10-15>” 和 “15 minutes or more” 的会话数量,并以此绘制柱状图。在 2020-05-04, 卖了 15 个苹果 和 16 个桔子 (差异为 15 - 16 = -1).在 2020-05-02, 卖了 15 个苹果 和 15 个桔子 (差异为 15 - 15 = 0).在 2020-05-03, 卖了 20 个苹果 和 0 个桔子 (差异为 20 - 0 = 20).

骑着居居追飞机的博客 1466

2020. 无流量的帐户数 - 力扣(LeetCode)

【代码】2020. 无流量的帐户数 - 力扣(LeetCode)

2301_78665414的博客 1210

leetcode 高频 SQL 50 题(基础版)刷题记录

1、cross join :交叉连接,如果表A有m行,表B有n行,那么A CROSS JOIN B的结果将包含m*n行。2、IFNULL(expression_1,expression_2),如果expression_1不为NULL,则IFNULL函数返回expression_1;否则返回expression_2的结果。3、distinct:可以指定一个或多个列进行去重,并返回唯一的结果。

weixin_44958677的博客 801

力扣刷题的一些些个注意点(持续更新)

2020/8/9 开始持续更新… 刷题,我是认真的!加油鸭~ 学习方法始终调整,欢迎指正。 这里写目录标题数组最长连续递增序列数字平方数之和 数组 最长连续递增序列 找最大的值,就直接和前面的值比较返回最大的不好吗? 不用非得放到vector里鸭 需要注意的是,注意边界问题!!!!!!! 比较两个值应该放在哪个位置。 如果放在else里面的话,就会出现当整个字符串都是结果时,比较代码不执行的情况,ans不更新,这样是不可以的哦~ //anyway,总算知道了vector如何求最大值鸭,虽然这道题没有用到.

weixin_43627723的博客 1828

2020-10-21刷题

将一个链表的值插入vector,用递归实现 #include "util.h" using namespace std; //定义链表的节点 struct Listnode{ int val; Listnode* next; Listnode(int x):val(x),next(nullptr){//列表初始化 } }; void add_to_vector(Listnode* head, vector<int>& vec){ if (!head

王学门徒 406
上一篇: 2020_12_20 LeetCode刷题
下一篇: 2020_12_22 LeetCode刷题
Ls_attack
博客等级 码龄10年 25粉丝 81原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值