
数据结构刷题记录
数据结构刷题记录
cloud的弟弟
这个作者很懒,什么都没留下…
展开
-
LeetCode -62不同路径
题目描述题目来源:https://leetcode-cn.com/problems/unique-paths/题解动态规划经典题目,比起青蛙跳台阶,使用二维数组更易理解;1 首先定义数组元素dp[x][y],以当前坐标为起点(0,0), dp[x][y]表示走到终点时所有的路径,那我们所求的dp[m-1][n-1]为我们所要求的答案。2 要最终走到(i,j)位置,有两种走法,第一种是从dp[i-1][j],第二种是从dp[i][j-1],也就是最终到达有两种情况,向下和向右,那么所有的情况为d原创 2020-08-18 08:42:54 · 194 阅读 · 0 评论 -
LeetCode -538 把二叉搜索树转化为累加树(C语言描述)
题目描述:题目来源:https://leetcode-cn.com/problems/convert-bst-to-greater-tree/思路:采用递归反序中序遍历实现,因为二叉搜索树右节点一定比双亲结点大,而左节点比双亲节点小,故采用以右子树为起点的中序遍历,使用sum累加后赋值即可。代码实现/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNo原创 2020-07-24 15:27:58 · 217 阅读 · 0 评论 -
剑指offer 27二叉树的镜像(C语言描述)
题目描述:题目来源https://leetcode-cn.com/problems/er-cha-shu-de-jing-xiang-lcof/方法一:利用先序遍历求解:void exchange(struct TreeNode *root){ struct TreeNode *T; T=root->left; root->left=root->right; root->right=T;}struct TreeNode* mirrorTree(st原创 2020-07-16 15:41:15 · 505 阅读 · 0 评论 -
LeetCode -232-用栈实现队列(C语言描述)
题目描述本题用到了栈和队列的知识,通过创建两个栈,一个栈入队,一个栈出队,从而能实现一个队列,如图代码如下#define MAX 10typedef struct { int data[MAX]; int Top; //栈顶元素}Create_Stack;typedef struct { //创建两个栈 Create_Stack S1; Create_Stack S2;} MyQueue;/** Initialize your data str原创 2020-07-05 20:51:09 · 249 阅读 · 0 评论 -
LeetCode -682棒球比赛(C语言描述)
LeetCode 682 棒球比赛题目来源LeetCode -682题目描述注: 输入列表的大小将介于1和1000之间列表中的每个整数都将介于-30000和30000之间。本题用到了栈的先进后出的知识,本题已知栈的长度,构造静态栈,利用switch语句即可int calPoints(char ** ops, int opsSize){ int sum=0; int Top=-1; //定义栈顶元素 int array[opsSize]; for(i原创 2020-06-26 15:12:42 · 685 阅读 · 0 评论 -
LeetCode 面试题 -22 链表中倒数第k个节点(C语言描述)
链表中倒数第K个节点题目描述题目来源:LeetCode-链表中倒数第K个节点由于在本题中,已经给定了链表不为空,测试用到的K值小于链表长度且不为0,故不需要考虑这些特殊情况方法一看到这个题目后,最先想到的方法是进行遍历,第一次遍历求出链表长度Length,第二次遍历(Length-k)+1次即为待求节点代码如下struct ListNode* getKthFromEnd(struct ListNode* head, int k){ int count = 1; st原创 2020-06-09 19:06:19 · 440 阅读 · 1 评论 -
LeetCode-237 删除链表中的节点(C语言描述)
题目描述题目来源:https://leetcode-cn.com/problems/delete-node-in-a-linked-list/思路:这个题刚刚看以为就是普通链表的删除,但是发现题目没有给头节点,看了其他的解答发现思路大致是将node的后一个节点赋值给node,跳过node的一下个节点,因为要删除的节点已经给出,所以不需要手动删除。代码如下:void deleteNode(struct ListNode* node) { node->val=node->nex原创 2020-05-31 17:36:54 · 282 阅读 · 1 评论 -
Leetcode-24 反转链表(C语言描述)
题目描述方法一原创 2020-05-30 20:06:09 · 184 阅读 · 0 评论