数据结构+C
数据结构图解题
入木
抬头看 天空是蓝色的
展开
-
对数组实现排序 --排序
本题不难只要会排序方法就可以解决,不理解的结合我排序的文章看堆排序方法/** * Note: The returned array must be malloced, assume caller calls free(). */ void swap(int*a,int*b) { int t =*a; *a=*b; *b=t; } void adjustDowm(int* nums,int numsSize,int parent) { int child =.原创 2021-10-05 16:16:59 · 119 阅读 · 0 评论 -
先序遍历的字符串建成二叉树后再进行中序遍历输出--二叉树
题目分析代码原创 2021-09-25 11:09:28 · 76 阅读 · 0 评论 -
前序遍历、中序遍历、后序遍历 --二叉树
前序遍历中序遍历int* _inorderTraversal(struct TreeNode*root,int *a,int* returnSize){ if(root==NULL) { return; } _inorderTraversal(root->left,a,returnSize); a[(*returnSize)++]=root->val; _inorderTraversal(root-&g原创 2021-09-24 22:50:33 · 71 阅读 · 0 评论 -
一颗树为另一棵树的子树
//判断两棵树是否相等bool _isSubtree(struct TreeNode* root, struct TreeNode* subRoot){ if(root==NULL&&subRoot==NULL) { return true; } if(root==NULL||subRoot==NULL) { return false; } if(root->val!=subRoot-&g..原创 2021-09-25 10:27:50 · 93 阅读 · 0 评论 -
判断两棵树是否相同 --二叉树
题目分析判断相等拿不了true的结果,就判断不相等拿false的结果代码原创 2021-09-25 09:45:45 · 110 阅读 · 0 评论 -
判断是否是平衡二叉树
//算出树的高度--通过比较左右子树的高度 //一定要int类型int _isBalanced(struct TreeNode* root){ if(root==NULL) { return 0; } return fmax(_isBalanced(root->left) , _isBalanced(root->right))+1; //会超出时间限制 // return _isBalanced(root->left) > _isB.原创 2021-09-30 16:12:13 · 75 阅读 · 0 评论 -
翻转二叉树--二叉树
struct TreeNode* invertTree(struct TreeNode* root){ if(root==NULL) { return NULL; } else { struct TreeNode*t=root->left; root->left=root->right; root->right=t; } invertTree(root->l.原创 2021-09-27 16:50:19 · 72 阅读 · 0 评论 -
对称二叉树 --二叉树
原创 2021-09-25 09:59:20 · 86 阅读 · 0 评论 -
单值二叉树 --二叉树
树上的值都相等原创 2021-09-24 22:18:48 · 81 阅读 · 0 评论 -
设计循环队列--队列
分析代码原创 2021-09-03 11:58:44 · 102 阅读 · 0 评论 -
用栈实现队列--栈和队列
用两个栈实现队列//栈的代码---------------------------首typedef int STDatatype;typedef struct Stack{ STDatatype* a; int top; int capacity;}ST;void StackInit(ST* ps);void StackDestroy(ST* ps);//顶进顶出void StackPush(ST* ps, STDatatype x);void StackPop(原创 2021-09-12 20:49:26 · 63 阅读 · 0 评论 -
用队列实现栈--栈和队列
用队列实现栈的分析原创 2021-09-03 10:01:12 · 69 阅读 · 0 评论 -
有效的括号- -栈
原创 2021-08-29 17:11:18 · 91 阅读 · 0 评论 -
拷贝链表random
分析代码原创 2021-08-20 15:14:26 · 120 阅读 · 0 评论 -
给定一个链表,返回链表开始入环的第一个节点--链表、环
方法1分析证明代码方法2转换成为相交问题原创 2021-08-19 22:00:08 · 126 阅读 · 0 评论 -
判断链表是否有环
知识点分析代码拓展原创 2021-08-19 17:28:43 · 60 阅读 · 0 评论 -
链表的相交
知识点原创 2021-08-19 15:34:01 · 53 阅读 · 0 评论 -
回文结构 - 链表
方法1分析代码 struct ListNode* FindMidNode(struct ListNode* phead) { struct ListNode*slow,*fast; slow=fast=phead; while(fast && fast->next) { slow=slow->next; fast=fast->next->next.原创 2021-08-04 11:50:27 · 91 阅读 · 0 评论 -
把比x小的节点按照相对顺序链接到前面 - 分割链表
分析代码原创 2021-08-04 10:07:51 · 125 阅读 · 0 评论 -
两个有序数组合并成有序数组 - (尾插 / 尾插+哨兵)- 链表
分析代码优化用带哨兵的头节点来解决问题区分两种结构原创 2021-08-03 23:52:59 · 131 阅读 · 0 评论 -
输入一个链表,输出该链表第k个结点 - 链表快慢指针
分析代码原创 2021-08-03 22:48:49 · 111 阅读 · 0 评论 -
返回链表中间的节点 - 链表快慢指针
分析代码原创 2021-08-03 22:18:20 · 60 阅读 · 0 评论 -
反转链表 - 链表
题目分析代码原创 2021-08-03 18:29:16 · 84 阅读 · 0 评论 -
删除链表中所有满足的等于val的值的节点,并返回新的节点 - 链表
题目分析代码原创 2021-08-03 17:41:28 · 68 阅读 · 0 评论 -
合并两个有序的数组--顺序表
return dest+1原创 2021-12-12 09:20:49 · 608 阅读 · 0 评论 -
有序数组 nums 原地删除重复出现的元素,使每个元素只出现一次 ,返回删除后数组的新长度--顺序表
题目方法1原创 2021-08-28 00:07:51 · 192 阅读 · 0 评论 -
一个数组和一个值val,移除数组中所有和val的值一样的数,并返回移除后数组的长度- -顺序表
题目方法1- -最优方法2方法3原创 2021-07-30 23:05:59 · 107 阅读 · 0 评论 -
旋转数组-且各种解法时间复杂度分析
1时间复杂度O(N)原创 2021-07-30 20:46:26 · 193 阅读 · 0 评论 -
数组nums包含从0到n的所有整数,但其中缺了一个。请找出那个缺失的整数。
数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。时间复杂度要求:O(N)方法1:#include<stdio.h>int missnumber(int a[], int sz){ int i=0; int sum1 = 0; int sum2 = 0; int num = 0; for (i = 0; i < sz; i++) { sum1 = sum1 + a[i]; } for (i = 0; i <=sz + 1原创 2021-07-29 23:34:34 · 1787 阅读 · 0 评论 -
一个整型数组 nums 里除两个数字之外,其他数字都出现了两次,找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。
一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。void Find(int arr[], int sz, int *px, int* py){ //1. 要把所有数字异或 int i = 0; int ret = 0; for (i = 0; i < sz; i++) { ret ^= arr[i]; } //2. 计算ret的哪一位为1 //ret = 3 //011 i原创 2021-07-29 23:21:35 · 270 阅读 · 0 评论