Leetcode_刷题大赏
文章平均质量分 70
王泊如
咸鱼
展开
-
动态规划刷题笔记
动态规划刷题笔记(持续更新)动规原理解法步骤练习目录Leetcode 322.零钱兑换 动规原理 学习/参考视频: 【动态规划专题班】ACM总冠军、清华+斯坦福大神带你入门动态规划算法 解法步骤 1、确定状态 确定最后一步 化成子问题 2、推出转移方程 3、判断初始条件和边界条件 4、确定计算顺序 练习目录 Leetcode 322.零钱兑换 题目描述: 给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金原创 2021-03-21 02:00:22 · 250 阅读 · 0 评论 -
「Leetcode」876.链表的中间节点
题目描述 给定一个带有头结点 head 的非空单链表,返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 示例 1: 输入:[1,2,3,4,5] 输出:此列表中的结点 3 (序列化形式:[3,4,5]) 返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。 注意,我们返回了一个 ListNode 类型的对象 ans,这样: ans.val = 3, ans....原创 2020-03-11 17:28:44 · 213 阅读 · 0 评论 -
「Leetcode」面试题22.链表中倒数第k个节点
题目描述 输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。 示例: 给定一个链表: 1->2->3->4->5, 和 k = 2. 返回链表 4->5. 使用语言:C语言 思路解析...原创 2020-03-11 15:55:51 · 496 阅读 · 0 评论 -
「Leetcode」237.删除链表中的节点
题目描述 请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。 现有一个链表 – head = [4,5,1,9],它可以表示为: 示例 1: 输入: head = [4,5,1,9], node = 5 输出: [4,1,9] 解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9. 示例...原创 2020-03-10 22:20:27 · 279 阅读 · 0 评论 -
「Leetcode」206.反转链表
题目描述 反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 使用语言:C语言 思路解析 我最开始想到的方法是,将原链表从末到首每个结点数据依次存储起来,创建一个新链表,再根据存储的数据依次创建结点,最后返回新链表,这么做实在是麻烦,使用下述方法: 创建三个指针p...原创 2020-03-10 22:02:13 · 213 阅读 · 0 评论 -
「Leetcode」203.移除链表元素
题目描述 删除链表中等于给定值 val 的所有节点。 示例: 输入: 1->2->6->3->4->5->6, val = 6 输出: 1->2->3->4->5 使用语言:C语言 思路解析 给两个指针cur和prev,prev是在cur前面的指针 找到链表中节点val值和输入val值相等的节点,若第一个节点就是需要删除的则直接让头...原创 2020-03-09 19:39:01 · 216 阅读 · 2 评论 -
「Leetcode」144.二叉树的前序遍历
语言:C语言 思路:前序遍历的顺序为根->左子树->右子树(NLR),首先需要计算需要开辟多大的空间,但是空间大小不能随便开辟,建立一个TreeSize()函数计算树的节点数量,有多少节点开辟多大的空间,然后建立一个函数_preorderTraversal(),使用前序遍历的顺序将每个节点依次放入数组,最后输出该数组即为题目答案。 思路脑图如下图所示 代码如下 int TreeSize...原创 2019-07-23 15:49:40 · 202 阅读 · 0 评论 -
「Leetcode」100.相同的树
语言:C语言 思路:先判断特殊情况>然后依次比较每个节点>两个数在比较中完全重合,即为相同的树。 如图所示,如果每一步判断都是完全相同(图中步骤我没有画完),此时两颗树就是相同的树 如果两颗树不相同,如下图所示,在步骤②就会被判false 总的来说这题思路总结为:同步 来看代码 bool isSameTree(struct TreeNode* p, struct TreeNode...原创 2019-07-22 16:42:10 · 253 阅读 · 0 评论 -
「Leetcode」104.二叉树的最大深度
解题语言:C语言 思路的大致框架是算出二叉树根节点左右子树的深度,然后相比,较大的一方即为该二叉树的最大深度(要记得加1,加上根节点那一层)。 先看我最初的解法 int maxDepth(struct TreeNode* root) { if(root==NULL) { return 0; } return maxDepth(root->l...原创 2019-07-22 15:57:34 · 181 阅读 · 0 评论 -
「Leetcode」101.对称二叉树
使用语言:C语言 题目思路: 第一层的根节点可以不用判断 每一次递归都将该树拆分为左树和右树 先判断左树和右树根节点是否一样,再判断左树和右树是否对称 判断两棵树是否对称可以使用之前的思路「Leetcode」100.相同的树 图片描述: 代码实现: /** * Definition for a binary tree node. * struct TreeNode { * in...原创 2019-07-25 17:23:29 · 161 阅读 · 0 评论 -
「Leetcode」94.二叉树的中序遍历
语言:C语言 思路:此题思路与我之前做的二叉树的前序遍历基本类似,唯一不同的是二者的顺序是不同的,中序遍历的顺序为左子树->根->右子树,但整体解题方法一样,可以参考我上一题的思路详解,链接放在下面了。 「Leetcode」144.二叉树的前序遍历 代码如下 /** * Definition for a binary tree node. * struct TreeNode { ...原创 2019-07-23 17:12:10 · 164 阅读 · 0 评论