- 博客(11)
- 收藏
- 关注
原创 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
127
原创 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
139
原创 剑指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
423
原创 链式二叉树的递归遍历(C语言描述)
二叉树的遍历可以采用递归和非递归的方法,本文介绍递归遍历的方法,代码如下。#include<stdio.h>#include<stdlib.h>//定义节点结构typedef struct BTnode{ char data; struct BTnode *plchild; struct BTnode *prchild;}BiTNode,*BiTree;void CreateBiTree(BiTree *); //构造子树void Pre
2020-07-13 15:08:30
281
原创 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
212
原创 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
613
转载 哈希表(数据结构)
参考链接:数据结构(严蔚敏)一、什么是Hash表要想知道什么是哈希表,那得先了解哈希函数哈希函数对比之前博客讨论的二叉排序树 二叉平衡树 红黑树 B B+...
2020-06-16 16:04:16
419
原创 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
365
1
原创 单链表寻找中间节点
单链表寻找中间节点在不知道链表长度的情况下,要求找到链表的中间节点。本例中如果链表长度为偶数情况下输出中间两个节点中靠后的那个。方法一遍历两遍链表,第一遍遍历的时候得到数组的长度count,第二次遍历的时候指针移动到(count/2)时输出。但该方法的复杂度较高。代码如下void Find_Mi(){ int count=0; struct Node *p=pHead; while (p!=NULL) { count++; p=p-&
2020-06-02 21:49:00
1615
2
原创 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
229
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人