Online Judge
文章平均质量分 57
楠c
这个作者很懒,什么都没留下…
展开
-
子序列与子串问题
最长公共子序列class Solution {public: int longestCommonSubsequence(string text1, string text2) { vector<vector<int>> dp(text1.size()+1,vector<int>(text2.size()+1,0)); for(int i=1;i<=text1.size();i++) {原创 2021-08-16 17:56:56 · 502 阅读 · 0 评论 -
模拟字符串相乘(大数运算)
1. 题目:模拟字符串相乘2. 思路:平时计算乘法列竖式有两种方式第一种方式,比如123乘以456,可以是123的每一位依次乘以6,在乘以5,再乘以4。错位再相加第二种方式,也可以是456的每一位依次乘以3,在乘以2,再乘以1。错位再相加其实是可以模拟这种列竖式的计算。假如我们把进位放在最后处理。模拟第一种方式列竖式:模拟第二种方式列竖式:而使用两层for循环就能很好的模拟这种情况for(int i=a.size()-1;i>=0;i--){ for(int j=b原创 2021-04-07 16:43:15 · 439 阅读 · 0 评论 -
设计一个循环队列(c++)
目录接口及要求开始错误的逻辑修改思路代码接口及要求题目链接开始错误的逻辑看到队列,首先我就想到了用链表来实现,但是这道题实际上用数组实现比较好一点,题目中提到循环,说明他是定长的一个队列,且要重复利用队列之前的空间存储新值。rear++,始终要指向当前元素的下一个用于插入数据与前面对比,当队列数据满了front 和rear也是相等的,那么到底是队列为空front与rear相等,还是队列满元素两者相等?这只是两个例子,还有很多的测试用例可以证明,因为无法区分两种情况,说明这样的循环队列结构已原创 2021-02-21 22:33:06 · 366 阅读 · 0 评论 -
两个栈实现一个队列,两个队列实现一个栈
目录1. 两个栈实现一个队列完整代码2. 用栈实现队列完整代码3. 队列实现栈完整代码4. STL中栈的接口5. STL中队列的接口1. 两个栈实现一个队列这两道题并没有考察太多的算法,就是单纯对队列和栈特性的应用。细节还是挺多需要注意的。题目链接一个栈是无法完成队列操作的,我们要时刻记住队列的性质,先入先出。入队列,我们可以按入栈进行操作,那么出队列呢,由于出队列是出队头的数据,我们不可能动栈底的数据,所以自然不能用一个栈。所以我们用两个栈,一个栈用来入队列,一个栈用于出队列 //第一原创 2021-02-19 22:50:58 · 682 阅读 · 0 评论 -
由leetcode “转换小写字母”引发的思考(位运算符转换字母大小写)
返回局部变量的地址,回忆并对比引用做返回值在vs 2013编一个代码时,最后失误返回了一个数组名,这个数组是在函数里开的一个局部变量,相当于我返回了数组第一个变量的地址。所以编译器发出警告。我们知道实际返回是这样一个过程,临时变量在中间做值拷贝.p出了函数所指向的地址被释放掉了,临时变量的指针还在指,就成了悬空指针。那么如果p是malloc出来的变量,我返回p,就是返回堆上的地址,是可以的,不过需要你自己用完之后释放内存,指针不用还要置空。(C++引用做返回值的话p到临时变量不用拷贝)突然想起来原创 2021-02-16 12:11:17 · 234 阅读 · 0 评论 -
经典链表面试题:对链表进行插入排序
简单介绍一下插入排序算法:题目链接点这两个例子:解题思路:利用插入排序这种思想给链表排序首先给出一个测试用例接着重新定义一个链表,把头节点拿下来,作为新的排序链表准备进行插入cur与sortHead的值进行比较,当cur为NULL,作为结束条件。按我们以往的经验,肯定不能直接与sortHead进行比较,而是重新定义一个变量。第一次比较:(默认升序)很明显是个头插。第二次比较:现在cur走到4,与下面的排序链表值进行比较,比sortHead大,所以我们需要比较他的下一个,所以需要原创 2021-01-31 19:26:08 · 297 阅读 · 1 评论 -
经典链表面试题:删除链表中重复的节点
题目描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5举个例子解题思路:删除掉重复节点,这个和去重有些不一样,去重是保留一个,这里是要有重复的完全删除掉。第一感觉就使用双指针,因为肯定要进行前后比较。两个节点对应的值不相同就往后走,相同就让后面指针自己走,直到不相同。然后删除掉之前的节点。图解实现:定义两个指针cur和ne原创 2021-01-30 21:29:50 · 1013 阅读 · 2 评论 -
LeetCode:证明环型链表与找出入环的第一个节点
bool hasCycle(struct ListNode *head) { struct ListNode *fast=head; struct ListNode *slow=head; while(fast&&fast->next) { slow=slow->next; fast=fast->next->next; //快慢指针相遇了说明有环 if(slow==fast) .原创 2021-01-10 20:23:32 · 233 阅读 · 1 评论 -
剑指offer: 链表中倒数第K个节点
/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* FindKthToTail(ListNode* pListHead,unsigned int k) { ListNode* slow=pListHead; ListNode* fast=pListHead.原创 2021-01-10 18:35:31 · 115 阅读 · 0 评论 -
LeetCode:合并两个有序链表
/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */typedef struct ListNode ListNode;struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2){ ListNode* dummy=(List.原创 2021-01-10 18:32:20 · 133 阅读 · 0 评论 -
2016年校招真题:链表的回文结构
/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) {}};*/class PalindromeList {public: bool chkPalindrome(ListNode* A) { //假如传入空 if(A==NULL) { return false; .原创 2021-01-10 15:52:49 · 130 阅读 · 0 评论 -
剑指 Offer 56 - I. 数组中数字出现的次数
题目描述:一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。题目限制:要求时间复杂度是O(n),空间复杂度是O(1)。思路:1.先排序,然后比较相邻数字是否相等。但是时间复杂度o(n2)2.运用哈希表,空间复杂度o(n)。(没学看不懂)3.按位异或。满足题目限制按位异或解法:(读了一下表达能力有限,看代码可能更高理解)先想一下,假如只有一个数字在这个数组里出现一次的话,其他条件不变。 只需按位异 或就可以把这个数揪出来。举个例.原创 2020-12-05 21:00:43 · 153 阅读 · 0 评论