![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法学习
文章平均质量分 53
艾米栗写代码
这个作者很懒,什么都没留下…
展开
-
求数组交集
求数组交集原创 2023-02-09 09:04:39 · 199 阅读 · 0 评论 -
算法 | 几数之和
n 数之和,涉及到哈希表原创 2023-02-07 22:39:50 · 360 阅读 · 0 评论 -
leetcode 精选100题(8) 二叉树展开为链表-中等
题目解析这个题,我不会做。。。我想的方法非常的简单。就是在遍历二叉树的时候,用另一个二叉树来存储内容。但是这样肯定是不行的,因为没有办法拼接。所以,必须分成两个步骤进行。反思:另一个点在于,我知道是用遍历,但是没有想好拼接方法。题目中提到了展开的链表和二叉树的先序遍历相同,就应该想到是先遍历左子树,再遍历右子树。遍历完再进行拼接,如何拼接?答案是通过递归进行拼接。/** * Definition for a binary tree node. * function Tree原创 2021-12-10 11:43:15 · 343 阅读 · 3 评论 -
leetcode 精选100题(7)合并二叉树-简单
题目解题分析:这个题目的思路也很简单,在遍历左右子树的过程中,将所有的节点,保存到root1中。但就是这么简单的问题,我最开始却没有写出来。问题在于,虽然想到了利用root1来降低空间利用,但是没有想到如何在递归的过程中将所有节点的数据保存到root1中。...原创 2021-12-01 19:38:42 · 87 阅读 · 0 评论 -
leetcode 精选100题(6)翻转二叉树-简单
题目解题分析呓语:欧耶,逐渐掌握二叉树了吗?这么快吗? 哈哈哈,开心正经一点,正经一点,这个题目看上去是很复杂,但是只要按照递归的套路去写,是一定可以写出来的。①递归形式flipTree(root)其最终的返回值应该是翻转之后的tree②单层递归情况所谓的翻转,就是左子树和右子树调换位置。但是,这里要返回一个新的子树才对。所以单层递归为: let node = new TreeNode(); node.val = root.val; r.原创 2021-11-26 12:55:54 · 4184 阅读 · 0 评论 -
leetcode 精选100题(5)二叉树的直径-简单
题目解题总结又是一道不会做的题。我的思路是,每一个节点作为根节点,找到左右子树最长路径,相加起来,就是经过该节点的最长路径。 再从中找到最长的那一个。代码如下:/** * @param {TreeNode} root * @return {number} */var diameterOfBinaryTree = function(root) { let maxDis=(root, len)=>{ if(!root) return len; .原创 2021-11-25 21:22:33 · 190 阅读 · 0 评论 -
leetcode 精选100题(4) 二叉树的最大深度-简单
自己实现啦,开心。原创 2021-11-22 23:33:43 · 222 阅读 · 0 评论 -
leetcode 精选100题(3)对称二叉树-简单
leetcode 精选 100 题原创 2021-11-21 21:21:07 · 357 阅读 · 0 评论 -
leetcode 精选100题(2)二叉树中序遍历-简单
这个题目很简单,考察的就是二叉树的中序遍历。只记得二叉树的很多题解是用递归,但却忘记了是怎么写,以及中序遍历的顺序。。。写递归的时候,要思考的几个问题:1. 什么时候跳出递归?2. 跳出递归的时候返回什么?在这个题目中,在节点为null时跳出递归,返回节点的值。因此,解法如下:/** * Definition for a binary tree node. * function TreeNode(val, left, right) { * this.val ...原创 2021-11-15 18:00:32 · 4106 阅读 · 0 评论 -
leetcode 精选100题(1)两数之和-简单
最近在工作的过程中,深刻感受到算法不行,举步难行。正是因为科班出身,了解时间复杂度空间复杂度的概念,更会对自己写的暴力求解方法进行挑剔。刚好,目前小组的项目不是很忙,所以,决定慢慢刷一刷精选100题。 争取每天一道。 思路是:先自己尝试求解,然后,分析他人的优秀解法。再总结成一篇文章。今天是11.14号,距离年底还有四十几天,希望能刷完三十道题吧。废话不多说,进入正题。对于缺乏算法思维的我来说,一上来,这个题目就难倒我了。如何有逻辑的去找到两个下标?最简单的办法:像冒泡一样去找.原创 2021-11-14 14:25:33 · 4542 阅读 · 0 评论 -
两个数组的交集
题目链接两个数组的交集题目描述:给定两个数组,编写一个函数来计算它们的交集。示例:输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2,2]这个题目上来我就理解成了数组去重。。。用了set,结果一测试发现不对。目前能想到的方法就是,使用map来进行辅助运算。对数组一使用map,计算每个数有几个,键为数,值为个数。然后遍历数组二,如果数组二中的数出现在了map数组一中,对应的值减1. 加入重合数组。var intersect = function(nums原创 2021-01-18 22:27:15 · 149 阅读 · 0 评论 -
括号问题
昨天做了一个括号匹配问题,今天就把leetcode上和括号有关的问题梳理一下。关键词: 回溯法,dfs,树,递归leetcode22:括号生成DFS和回溯法实际上依旧是一种暴力枚举的方法。算法流程:进行空间树构造遍历空间树如果遇到边界条件,不再向下搜索,搜索另一条链遍历结束,输出结果为了减小时间复杂度,可以对不可能发生的情况进行剪枝。不同题目的剪枝条件不一样。括号生成这个题就是一个回溯的做法。回溯法的本质是一颗树。树有根节点,和两个子节点。回溯中重要的两个要点是: 回溯条件,原创 2021-01-17 18:50:22 · 188 阅读 · 0 评论 -
入门训练 Fibonacci数列
入门训练 Fibonacci数列 问题描述Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。输入格式输入包含一个整数n。输出格式输出一行,包含一个整数,表示Fn除以10007的余数。说明:在本题中,答案是要求Fn除以10007原创 2017-04-04 20:14:04 · 127 阅读 · 0 评论 -
最长单调递增子序列的三种解法
从报名蓝桥杯开始我就觉得我走入了一条及其坑的路。从大一到大三我写过的代码,思考过的算法真是少之又少,一个动态规划我依旧没有吃透,真的是觉得好有挫败感。不过还好,一点点来。既然知道自己要去做这件事情,就认真去做吧。就算开始的比较晚但是能学到东西就很好。这是转载自爱天涯技术论坛。http://qiemengdao.iteye.com/blog/1660229解释转载 2017-02-26 14:34:14 · 1799 阅读 · 2 评论 -
动态规划 数字三角形
题目描述 Description如图所示的数字三角形,从顶部出发,在每一结点可以选择向左走或得向右走,一直走到底层,要求找出一条路径,使路径上的值最大。输入描述 Input Description第一行是数塔层数N(1第二行起,按数塔图形,有一个或多个的整数,表示该层节点的值,共有N行。输出描述 Output Descriptio原创 2017-02-25 09:26:24 · 285 阅读 · 0 评论