首页
关于
在线观影
数据统计
在线直播
在线壁纸
更多
友情链接
Search
1
宝塔9.6.0开心版本 - 破解版 - 无后门版本
299 阅读
2
如何免费利用授权服务器(License Server)激活Jetbrains全家桶
130 阅读
3
TVbox最新4K源分享
91 阅读
4
欢迎使用 Typecho
77 阅读
5
记录一次网站的崩溃历史!
69 阅读
C/C++
Python
技术分享
前端项目学习
Vue
日常分享
八股文面试
科技闲聊
登录
/
注册
Search
标签搜索
苹果cms
蜘蛛
tvbox
苹果cms问题
苹果cmsseo
RSS订阅
Vue学习
RSS
tvbox官网
LLM
大语言模型
DeepSeek
订阅教程
海绵博客
蒸馏模型
Django
线性列表
影视网站
前后端不分离项目
Python
小菩提
累计撰写
110
篇文章
累计收到
15
条评论
首页
栏目
C/C++
Python
技术分享
前端项目学习
Vue
日常分享
八股文面试
科技闲聊
页面
关于
在线观影
数据统计
在线直播
在线壁纸
友情链接
搜索到
102
篇与
的结果
力扣559 - N叉树的最大深度
今天还是日更一篇博文,刚开始的确没有想到,看了大佬的想法后做出来的,这个还是用的递归思想,首先我们还是贴上题目给定一个 N 叉树,找到其最大深度。最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。N 叉树输入按层序遍历序列化表示,每组子节点由空值分隔(请参见示例)。示例 1: 输入:root = [1,null,3,2,4,null,5,6]输出:3示例 2: 输入:root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14]输出:5int maxDepth(struct Node* root) { if (root == NULL) { return 0; } if(root -> numChildren == 0) { return 1; } int maxdepth = 0; for (int i = 0; i < root -> numChildren; i++) { maxdepth = fmax(maxdepth,maxDepth(root -> children[i])); } return 1 + maxdepth; } 那么思路来了,首先我们先判断,如果root是空的话 也就是抵达了最下面,那么直接返回0接下来,如果root的孩子节点的数量是0的话 说明下面没有分支了,那么返回1接下来先确定一个最大深度的变量接下来写一个for循环。初始化是1,然后接下来i种植的条件是numChildren的数量,然后i++接下来可以看到maxdepth的数量是随着maxdepth和maxDepth函数的传入值进行的比较。谁大取谁,最后返回maxdepth+1是因为最大的值是numchildren,所以说要加一个最上面的头节点以上就是简单的思路,总之来说用的是递归和二叉树的简单思路
2024年11月10日
13 阅读
0 评论
1 点赞
2024-11-09
力扣日更859亲密字符串
依旧是正常的日更,今天来看一很好的题目给你两个字符串 s 和 goal ,只要我们可以通过交换 s 中的两个字母得到与 goal 相等的结果,就返回 true ;否则返回 false 。交换字母的定义是:取两个下标 i 和 j (下标从 0 开始)且满足 i != j ,接着交换 s[i] 和 s[j] 处的字符。例如,在 "abcd" 中交换下标 0 和下标 2 的元素可以生成 "cbad" 。这个不可以想的很简单,要卡很多的范围!!!我先直接上代码把#include <stdio.h> #include <string.h> int hash[26]; bool buddyStrings(char * s, char * goal){ int len_s = strlen(s); int len_g = strlen(goal); int left = 0; int right = len_s - 1; if (len_g != len_s) { return false; } memset(hash, 0, sizeof(hash)); if (strcmp(s, goal) == 0) { for (int i = 0; i < len_s; i++) { hash[s[i] - 'a']++; if (hash[s[i] - 'a'] >= 2) { return true; } } return false; } while (left < len_s && s[left] == goal[left]) { left++; } while (right >= 0 && s[right] == goal[right]) { right--; } char tmp = s[left]; s[left] = s[right]; s[right] = tmp; return strcmp(s, goal) == 0 ? true : false; } 代码原理很简单,首先先定义俩长度 sizeof(s)sizeof(goal),用来作比较接下来先简单比较,如果连大小都不一样的话 那么没必要后面的判断了。接下来如果我们假设a是aa goal也是aa的话那么先进行判断 strcmp是比较字符串是否相等的一个函数,用来比较俩值是否相等的那么如果相等的话 让这个每一个值都存到hash里面,如果hash大于2的话 那么判断是true 接下来是不相等的情况 比如s是aab goal是aba的话那么 进行循环判断,当第一次循环的时候发现 left是1的情况就停止了,第二次循环是当第一下就听着就停止了,此时的right是2接下来 数组进行交换后判断俩字符串是否相等,相等出true 不相等出false还有一种情况是 s是aab goal是aac的情况那么直接进行循环判断,第一次循环的时候,left是2的时候停止,那么第二次循环也是2的时候停止 right是2的情况下那么这种情况下字符串换顺序就没有任何的意义当strcmp的时候,他就会自动返回falsereturn strcmp(s,goal) == 0?true : false;
2024年11月09日
17 阅读
0 评论
0 点赞
2024-11-08
力扣照常更新896 单调数列
今天这个有点意思 有点flag的感觉,但是又不太一样的样子直接上题目如果数组是单调递增或单调递减的,那么它是 单调 的。如果对于所有 i <= j,nums[i] <= nums[j],那么数组 nums 是单调递增的。 如果对于所有 i <= j,nums[i]> = nums[j],那么数组 nums 是单调递减的。当给定的数组 nums 是单调数组时返回 true,否则返回 false。那么很简单,进行循环判断即可但是怎么写在我这里犯了难,就是我不知道如何一直一直的表示下去那么我看了一眼别人写的我来简单的解释说明一下bool isMonotonic(int* nums, int numsSize) { int i; bool increasing = true; bool decreasing = true; for (i = 0; i < numsSize - 1; i++) { if (nums[i] > nums[i + 1]) { increasing = false; } else if (nums[i] < nums[i + 1]) { decreasing = false; } // 如果既不递增也不递减,则不是单调数组 if (!increasing && !decreasing) { return false; } } return true; } 意思就是 先设置一个i变量进行循环判断,然后设置decreaing和increasing来作为bool来判断,接下来就是判断的正常基槽了。比如123 如果第一个小于第二个的话 increasing是true decreasing是false那么接下来执行下面的代码 如果increasing是false decreasing也是false,那么很简单 说明不是递增,也是不是递减的了看了这道题目,我又多了一种思考问题的方法真的厉害
2024年11月08日
12 阅读
0 评论
0 点赞
2024-11-06
力扣颠倒二进制位
这个是利用的进制的转换实现的首先我们要知道,如果一个二进制往左移动一位的话 那么相当于扩大了二倍,比如说二进制的1代表1.如果往左移动一位的话,就是10,那么这个二进制是2,相当于1 * 2.同样的道理,接着移动一位的话就是100,这个二进制是4。那么接下来的题目就很好完成了,颠倒给定的 32 位无符号整数的二进制位。uint32_t reverseBits(uint32_t n) { uint32_t result = 0; for(int i = 0;i < 32;i++){ result = (result << 1) +(n >> i & 1); } return result; }解释一下,首先就是定位了一个32位的result,初始化为0,接下来进行一个for循环。首先就是还是上面的案例,比如输入的是101,那么我们刚开始result是0,然后n向左移动一位是1,相当于1 + 0,接下来是result是1 但是此时的result需要向左移动一位也就是变成了10,接下来加上n的第二位,是0,和1进行异或运算,结果是0,那么10 + 0是10接下来同样的道理,可以很轻松的得到正确的答案。
2024年11月06日
13 阅读
0 评论
0 点赞
2024-11-05
力扣刷题344 反转字符串
很典型的双指针类型的问题双指针最近做了几道题目,感觉没啥意思,基本都是讨一个模板接下来直接贴上题目编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。那么接下来编辑函数void reverseString(char* s, int sSize) { int i = 0; int j = sSize - 1; int temp; while (i < j){ temp = s[i]; s[i++] = s[j]; s[j--] = temp; } }思路很简单,定义一个start 再定义一个end 然后start从前面 end从后面开始不断的交换,和之前讲的那种swap交换数字很类似的基本没啥难度 日更结束 休息
2024年11月05日
14 阅读
0 评论
0 点赞
1
...
18
19
20
21