首页
关于
在线观影
数据统计
在线直播
在线壁纸
更多
友情链接
Search
1
宝塔9.6.0开心版本 - 破解版 - 无后门版本
302 阅读
2
如何免费利用授权服务器(License Server)激活Jetbrains全家桶
132 阅读
3
TVbox最新4K源分享
93 阅读
4
欢迎使用 Typecho
77 阅读
5
记录一次网站的崩溃历史!
70 阅读
C/C++
Python
技术分享
前端项目学习
Vue
日常分享
八股文面试
科技闲聊
登录
/
注册
Search
标签搜索
苹果cms
蜘蛛
tvbox
苹果cms问题
苹果cmsseo
RSS订阅
Vue学习
RSS
tvbox官网
LLM
大语言模型
DeepSeek
订阅教程
海绵博客
蒸馏模型
Django
线性列表
影视网站
前后端不分离项目
Python
小菩提
累计撰写
110
篇文章
累计收到
15
条评论
首页
栏目
C/C++
Python
技术分享
前端项目学习
Vue
日常分享
八股文面试
科技闲聊
页面
关于
在线观影
数据统计
在线直播
在线壁纸
友情链接
搜索到
65
篇与
的结果
2024-12-03
力扣617合并二叉树
给你两棵二叉树: root1 和 root2 。想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为 null 的节点将直接作为新二叉树的节点。返回合并后的二叉树。注意: 合并过程必须从两个树的根节点开始。输入:root1 = [1,3,2,5], root2 = [2,1,3,null,4,null,7]输出:[3,4,5,5,4,null,7]示例 2:输入:root1 = [1], root2 = [1,2]输出:[2,2]直接上代码struct TreeNode* mergeTrees(struct TreeNode* root1, struct TreeNode* root2) { if(root1 == NULL){ return root1; } if(root2 == NULL){ return root2; } struct TreeNode* Node = malloc(sizeof(struct TreeNode)); node->val = root1->val1 + root2 ->val2; node->left = mergeTrees(root1->left,root2->left); node->right = mergeTrees(root1->right,root2->right); } return node;简单递归,没有什么难度
2024年12月03日
11 阅读
0 评论
0 点赞
2024-11-30
力扣 二叉搜索树中的众树
给你一个含重复值的二叉搜索树(BST)的根节点 root ,找出并返回 BST 中的所有 众数(即,出现频率最高的元素)。如果树中有不止一个众数,可以按 任意顺序 返回。假定 BST 满足如下定义:结点左子树中所含节点的值 小于等于 当前节点的值结点右子树中所含节点的值 大于等于 当前节点的值左子树和右子树都是二叉搜索树上代码 // 比较函数,用于qsort int compare(const void * a, const void * b) { struct ValueCount *va = (struct ValueCount *)a; struct ValueCount *vb = (struct ValueCount *)b; return vb->count - va->count; } // 中序遍历二叉树,统计每个节点值的出现次数 void inorderTraversal(struct TreeNode *node, struct ValueCount **valueCounts, int *countIndex, int *maxSize) { if (node == NULL) { return; } inorderTraversal(node->left, valueCounts, countIndex, maxSize); int i; for (i = 0; i < *countIndex; i++) { if ((*valueCounts)[i].value == node->val) { (*valueCounts)[i].count++; break; } } if (i == *countIndex) { // 检查是否需要扩容数组 if (*countIndex >= *maxSize) { // 扩容策略,这里简单地翻倍 *maxSize *= 2; struct ValueCount *newArray = (struct ValueCount *)realloc(*valueCounts, sizeof(struct ValueCount) * (*maxSize)); if (newArray == NULL) { // 处理内存分配失败的情况 printf("内存分配失败!\n"); exit(1); } *valueCounts = newArray; } (*valueCounts)[*countIndex].value = node->val; (*valueCounts)[*countIndex].count = 1; (*countIndex)++; } inorderTraversal(node->right, valueCounts, countIndex, maxSize); } // 找出众数并返回结果数组 int *findMode(struct TreeNode *root, int *returnSize) { // 初始分配足够的空间,这里假设初始大小为10 int maxSize = 10; // 用于存储节点值及其出现次数的数组 struct ValueCount *valueCounts = (struct ValueCount *)malloc(sizeof(struct ValueCount) * maxSize); int countIndex = 0; // 中序遍历二叉树,统计节点值出现次数 inorderTraversal(root, &valueCounts, &countIndex, &maxSize); // 根据出现次数对valueCounts数组进行排序 qsort(valueCounts, countIndex, sizeof(struct ValueCount), compare); // 找出最大出现次数 int maxCount = valueCounts[0].count; // 统计众数的个数 int modeCount = 0; for (int i = 0; i < countIndex; i++) { if (valueCounts[i].count == maxCount) { modeCount++; } else { break; } } // 分配返回结果数组的空间 int *modes = (int *)malloc(sizeof(int) * modeCount); // 将众数填充到返回结果数组中 int j = 0; for (int i = 0; i < countIndex && j < modeCount; i++) { if (valueCounts[i].count == maxCount) { modes[j] = valueCounts[i].value; j++; } } // 释放用于统计节点值出现次数的数组空间 free(valueCounts); // 设置返回结果数组的大小 *returnSize = modeCount; return modes; }思路很简单,思路就是先把树进行一个中序排序,接下来进行把一个一个数字都放到哈希表里面,然后一个一个循环哈希表里面的数字,进行排序。选出一个最大的来,思路就是这个样子
2024年11月30日
23 阅读
0 评论
0 点赞
2024-11-29
力扣350俩个数组的交集Ⅱ
给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果的顺序。上代码int* intersect(int* nums1, int nums1Size, int* nums2, int nums2Size, int* returnSize){ int table[1001]; int count=0; int* ans=(int*)malloc(sizeof(int)*nums2Size); memset(table,0,sizeof(table)); for(int i=0;i<nums1Size;i++){ table[nums1[i]]+=1; } for(int i=0;i<nums2Size;i++){ if(table[nums2[i]]>0){ ans[count++]=nums2[i]; table[nums2[i]]-=1; } } *returnSize=count; return ans; } 最悲催的一次
2024年11月29日
14 阅读
0 评论
0 点赞
2024-11-28
力扣288和汇总区间
给定一个 无重复元素 的 有序 整数数组 nums 。返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 。也就是说,nums 的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于 nums 的数字 x 。列表中的每个区间范围 [a,b] 应该按如下格式输出:"a->b" ,如果 a != b"a" ,如果 a == b我用的哈希的做法上答案我看其他人没有人用哈希的,感觉就我一个人。。。#include <stdio.h> #include <stdlib.h> #include <string.h> // 计算最小有序区间范围列表 char** summaryRanges(int* nums, int numsSize, int* returnSize) { // 用于存储结果区间范围的二维字符数组 char** result = (char**)malloc((numsSize + 1) * sizeof(char*)); int resultIndex = 0; if (numsSize == 0) { *returnSize = 0; return result; } int start = nums[0]; int end = nums[0]; for (int i = 1; i < numsSize; i++) { if (nums[i] == end + 1) { end = nums[i]; } else { // 生成当前区间范围的字符串并存储到结果数组 if (start == end) { result[resultIndex] = (char*)malloc(20 * sizeof(char)); sprintf(result[resultIndex], "%d", start); } else { result[resultIndex] = (char*)malloc(40 * sizeof(char)); sprintf(result[resultIndex], "%d->%d", start, end); } resultIndex++; start = nums[i]; end = nums[i]; } } // 处理最后一个区间范围 if (start == end) { result[resultIndex] = (char*)malloc(20 * sizeof(char)); sprintf(result[resultIndex], "%d", start); } else { result[resultIndex] = (char*)malloc(40 * sizeof(char)); sprintf(result[resultIndex], "%d->%d", start, end); } resultIndex++; *returnSize = resultIndex; return result; }
2024年11月28日
17 阅读
0 评论
0 点赞
2024-11-27
日更力扣257二叉树的所有路径
还是老规矩上题目给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。叶子节点 是指没有子节点的节点。示例 1:输入:root = [1,2,3,null,5]输出:["1->2->5","1->3"]示例 2:输入:root = [1]输出:["1"]接下来上代码void cons_paths(struct TreeNode* root,char** ss,int* stack,int top,int* returnSize){ if(root == NULL){ return; }else{ if(root->left != NULL || root->right !=NULL){ stack[top] = root -> val; top++; cons_paths(root->left,ss,stack,top,returnSize); cons_paths(root->right,ss,stack,top,returnSize); }else{ char* s = (char*)malloc(sizeof(int) * 500); int len = 0; int i = 0; for(i;i<top;i++){ len = len + sprintf(s + len,"%d->",stack[i]); } sprint(s+len,"%d->",root->val); ss[(*returnSize)] = s; (*returnSize)++; } } } char** binaryTreePaths(struct TreeNode* root, int* returnSize) { char** ss = (char**)malloc(sizeof(char*) * 100); *returSize = 0; int stack[100]; cons_paths(root,ss,stack,0,returnSize); return ss; }思路来源于某大佬,他大概意思是这样的,先进性一个stack 把一条路线是的所有都是传到一个stack里面 然后再一个一个拿数组里面来,先写这些,明天好好的吧全部的思路解释清楚
2024年11月27日
37 阅读
1 评论
1 点赞
1
...
7
8
9
...
13