首页
关于
在线观影
数据统计
在线直播
在线壁纸
更多
友情链接
Search
1
记录一次网站的崩溃历史!
47 阅读
2
宝塔9.5.0开心版本 - 破解版 - 无后门版本
47 阅读
3
欢迎使用 Typecho
40 阅读
4
如何免费利用授权服务器(License Server)激活Jetbrains全家桶
37 阅读
5
2025年Flutter开发全网最全学习路线指南
29 阅读
C/C++
Python
技术分享
前端项目学习
Vue
日常分享
登录
/
注册
Search
标签搜索
苹果cms
苹果cms问题
苹果cmsseo
Vue学习
RSS
RSS订阅
Django
Pycharm
Python
前后端不分离项目
影视网站
前端项目
DeepSeek
蒸馏模型
LLM
大语言模型
VUE
海绵博客
订阅教程
信息获取
小菩提
累计撰写
93
篇文章
累计收到
11
条评论
首页
栏目
C/C++
Python
技术分享
前端项目学习
Vue
日常分享
页面
关于
在线观影
数据统计
在线直播
在线壁纸
友情链接
搜索到
85
篇与
的结果
力扣反转链表
2024年11月17日
4 阅读
0 评论
0 点赞
2024-11-17
还是一如既往的链表,这个链表我一时间没有想到。我知道用双指针,但是我想的版本是前面一个pre指针 后面一个last指针,同时遍历,知道中间的时候,也就是说中间的时候直接返回。后来看了别人的后,改了一下思路。我先上题目给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。示例 1: 输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]示例 2: 输入:head = [1,2]输出:[2,1]示例 3:输入:head = []输出:[]以下是第一种思路的代码struct ListNode* reverseList(struct ListNode* head) { // 如果链表为空或者只有一个节点,直接返回头节点 if (head == NULL || head->next == NULL) { return head; } // 递归反转除第一个节点外的其余链表 struct ListNode* newHead = reverseList(head->next); // 将第一个节点连接到反转后的链表末尾 head->next->next = head; head->next = NULL; return newHead; }以下是第二种思路/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ struct ListNode* reverseList(struct ListNode* head) { struct ListNode* pre = NULL; struct ListNode* cur = head; while(cur){ struct ListNode temp = cur -> next; cur -> next = pre; pre = cur; cur = temp; } return pre; } 
2024-11-12
日更力扣171 Excel表列序号
给你一个字符串 columnTitle ,表示 Excel 表格中的列名称。返回 该列名称对应的列序号 。学习到了一个新的函数关键词 math里面的Pow函数,这个函数的作用是计算权重的直接上题目和截图int titleToNumber(char* columnTitle) { if (strlen(columnTitle) == 0){ return 0; }else{ return (columnTitle[0] - 'A' + 1) * pow(26, strlen(columnTitle) - 1) + titleToNumber(columnTitle + 1); } }
2024年11月12日
7 阅读
0 评论
0 点赞
力扣相交链表
今天看到了一种大佬的思路 的确牛皮,如果是我的话 可能我就会傻傻的俩个循环去判断了,先贴上题目给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。图示两个链表在节点 c1 开始相交:题目数据 保证 整个链式结构中不存在环。注意,函数返回结果后,链表必须 保持其原始结构 。自定义评测:评测系统 的输入如下(你设计的程序 不适用 此输入):intersectVal - 相交的起始节点的值。如果不存在相交节点,这一值为 0listA - 第一个链表listB - 第二个链表skipA - 在 listA 中(从头节点开始)跳到交叉节点的节点数skipB - 在 listB 中(从头节点开始)跳到交叉节点的节点数评测系统将根据这些输入创建链式数据结构,并将两个头节点 headA 和 headB 传递给你的程序。如果程序能够正确返回相交节点,那么你的解决方案将被 视作正确答案 。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,6,1,8,4,5], skipA = 2, skipB = 3输出:Intersected at '8'解释:相交节点的值为 8 (注意,如果两个链表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,6,1,8,4,5]。在 A 中,相交节点前有 2 个节点;在 B 中,相交节点前有 3 个节点。— 请注意相交节点的值不为 1,因为在链表 A 和链表 B 之中值为 1 的节点 (A 中第二个节点和 B 中第三个节点) 是不同的节点。换句话说,它们在内存中指向两个不同的位置,而链表 A 和链表 B 中值为 8 的节点 (A 中第三个节点,B 中第四个节点) 在内存中指向相同的位置。示例 2:输入:intersectVal = 2, listA = [1,9,1,2,4], listB = [3,2,4], skipA = 3, skipB = 1输出:Intersected at '2'解释:相交节点的值为 2 (注意,如果两个链表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [1,9,1,2,4],链表 B 为 [3,2,4]。在 A 中,相交节点前有 3 个节点;在 B 中,相交节点前有 1 个节点。示例 3:输入:intersectVal = 0, listA = [2,6,4], listB = [1,5], skipA = 3, skipB = 2输出:No intersection解释:从各自的表头开始算起,链表 A 为 [2,6,4],链表 B 为 [1,5]。由于这两个链表不相交,所以 intersectVal 必须为 0,而 skipA 和 skipB 可以是任意值。这两个链表不相交,因此返回 null 。接下来上代码和大佬的解释,以上所有文字原子力扣/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) { struct ListNode *q,*p; for(p = headA,q = headB;p != q;){ if(p != NULL){ p = p -> next; }else p = headB; if(q != NULL){ q = q -> next; }else q = headA; } return p; }上面是C语言版本1.如果按照大佬的代码可能刚开始看不懂,但是我这个版本刚刚好具体算法如下:初始化两个指针 p=headA, q=headB。不断循环,直到 p=q。每次循环,p 和 q 各向后走一步。具体来说,如果 p 不是空节点,那么更新 p 为 p.next,否则更新 p 为 headB;如果 q 不是空节点,那么更新 q 为 q.next,否则更新 q 为 headA。循环结束时,如果两条链表相交,那么此时 p 和 q 都在相交的起始节点处,返回 p;如果两条链表不相交,那么 p 和 q 都走到空节点,所以也可以返回 p,即空节点。
2024年11月11日
7 阅读
0 评论
1 点赞
力扣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日
6 阅读
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日
6 阅读
0 评论
0 点赞
1
...
14
15
16
17