Leetcode_刷题大赏
文章平均质量分 70
王泊如
咸鱼
展开
-
动态规划刷题笔记
动态规划刷题笔记(持续更新)动规原理解法步骤练习目录Leetcode 322.零钱兑换动规原理学习/参考视频:【动态规划专题班】ACM总冠军、清华+斯坦福大神带你入门动态规划算法解法步骤1、确定状态确定最后一步化成子问题2、推出转移方程3、判断初始条件和边界条件4、确定计算顺序练习目录Leetcode 322.零钱兑换题目描述:给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金原创 2021-03-21 02:00:22 · 235 阅读 · 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 · 199 阅读 · 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 · 474 阅读 · 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 · 265 阅读 · 0 评论 -
「Leetcode」206.反转链表
题目描述反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL使用语言:C语言思路解析我最开始想到的方法是,将原链表从末到首每个结点数据依次存储起来,创建一个新链表,再根据存储的数据依次创建结点,最后返回新链表,这么做实在是麻烦,使用下述方法:创建三个指针p...原创 2020-03-10 22:02:13 · 197 阅读 · 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 · 199 阅读 · 2 评论 -
「Leetcode」144.二叉树的前序遍历
语言:C语言思路:前序遍历的顺序为根->左子树->右子树(NLR),首先需要计算需要开辟多大的空间,但是空间大小不能随便开辟,建立一个TreeSize()函数计算树的节点数量,有多少节点开辟多大的空间,然后建立一个函数_preorderTraversal(),使用前序遍历的顺序将每个节点依次放入数组,最后输出该数组即为题目答案。思路脑图如下图所示代码如下int TreeSize...原创 2019-07-23 15:49:40 · 181 阅读 · 0 评论 -
「Leetcode」100.相同的树
语言:C语言思路:先判断特殊情况>然后依次比较每个节点>两个数在比较中完全重合,即为相同的树。如图所示,如果每一步判断都是完全相同(图中步骤我没有画完),此时两颗树就是相同的树如果两颗树不相同,如下图所示,在步骤②就会被判false总的来说这题思路总结为:同步来看代码bool isSameTree(struct TreeNode* p, struct TreeNode...原创 2019-07-22 16:42:10 · 242 阅读 · 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 · 164 阅读 · 0 评论 -
「Leetcode」101.对称二叉树
使用语言:C语言题目思路:第一层的根节点可以不用判断每一次递归都将该树拆分为左树和右树先判断左树和右树根节点是否一样,再判断左树和右树是否对称判断两棵树是否对称可以使用之前的思路「Leetcode」100.相同的树图片描述:代码实现:/** * Definition for a binary tree node. * struct TreeNode { * in...原创 2019-07-25 17:23:29 · 148 阅读 · 0 评论 -
「Leetcode」94.二叉树的中序遍历
语言:C语言思路:此题思路与我之前做的二叉树的前序遍历基本类似,唯一不同的是二者的顺序是不同的,中序遍历的顺序为左子树->根->右子树,但整体解题方法一样,可以参考我上一题的思路详解,链接放在下面了。「Leetcode」144.二叉树的前序遍历代码如下/** * Definition for a binary tree node. * struct TreeNode { ...原创 2019-07-23 17:12:10 · 143 阅读 · 0 评论