剑指offer
早田凛凛子
这个作者很懒,什么都没留下…
展开
-
链表中的节点每k个一组翻转
链表中的节点每k个一组翻转原创 2023-02-12 20:18:29 · 414 阅读 · 1 评论 -
大数乘法c++
大数乘法原创 2022-07-16 16:46:40 · 224 阅读 · 0 评论 -
动态规划之最长回文子串
动态规划之最长回文子串原创 2022-07-14 17:38:33 · 601 阅读 · 0 评论 -
剑指offer 最长不含重复字符的子字符串
最长不含重复字符的子字符串描述:请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。题解:维护一个map用来存放遍历到的字符以及下标maxlen用来存放最大的长度值curlen用来存放现在正在遍历的不重复字符串的长度存在三种情况:当前字符没有出现过,也就是map中没有这个字符的信息,此时curlen++当前字符减去上一次该字符出现的下标大于curlen,说明该字符上一次字符出现的时候在上一个计算的不重复字符串中,也就是这一个字符并没有重复,curlen++当前原创 2022-03-06 17:45:08 · 129 阅读 · 0 评论 -
剑指offer 礼物的最大价值
礼物的最大价值描述:在一个m\times nm×n的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?如输入这样的一个二维数组,[[1,3,1],[1,5,1],[4,2,1]]那么路径 1→3→5→2→1 可以拿到最多价值的礼物,价值为12解题:一开始可能会想到,判断每个元素的右边元素和下面元素哪个更大,每个元原创 2022-03-06 11:47:22 · 357 阅读 · 0 评论 -
剑指offer 跳台阶扩展问题
跳台阶扩展问题题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶(n为正整数)总共有多少种跳法?解题:f[0]=f[1]=1f[n]=f[n-1]+f[n-2]+…+f[0]因为 f[n-1]=f[n-2]+…+f[0]所以 f[n]=2 * f[n-1]同理 f[n-1]=2 * f[n-2]最终得到 f[n]=2 * 2 * 2 * … * f[0]代码:class Solution {public: int jumpF原创 2022-03-05 16:36:25 · 121 阅读 · 0 评论 -
剑指offer 正则表达式匹配
正则表达式匹配题目要求:请实现一个函数用来匹配包括’.‘和’‘的正则表达式。1.模式中的字符’.‘表示任意一个字符2.模式中的字符’'表示它前面的字符可以出现任意次(包含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但是与"aa.a"和"ab*a"均不匹配解题代码:class Solution {public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可原创 2022-03-05 15:51:47 · 168 阅读 · 0 评论 -
链表-两个链表的第一个公共结点
题目:输入两个无环的单向链表,找出它们的第一个公共结点,如果没有公共节点则返回空。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)例如,输入{1,2,3},{4,5},{6,7}时,两个无环的单向链表的结构如下图所示:可以看到它们的第一个公共结点的结点值为6,所以返回结点值为6的结点。输入描述:输入分为是3段,第一段是第一个链表的非公共部分,第二段是第二个链表的非公共部分,第三段是第一个链表和二个链表的公共部分。 后台会将这3个参数组装为两个链表,并将这原创 2021-12-13 14:44:35 · 204 阅读 · 0 评论 -
链表-反转链表
题目:给定一个单链表的头结点pHead,长度为n,反转该链表后,返回新链表的表头。如当输入链表{1,2,3}时,经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。以上转换过程如下图所示:解题思路:反转链表也就是让每个结点的next指针反向指向前一个结点,我们可以想到的是,如下图步骤:其中:pre是用来指向反转需要指向的前一个结点,一开始的时候pre为nullptr。cur是用来指向当前的结点。next是用来指向cur的下一个结点,因为cur的结点的next如果一旦原创 2021-12-13 15:10:51 · 885 阅读 · 0 评论 -
链表-倒数最后k个结点
题目:输入一个长度为 n 的链表,设链表中的元素的值为 ai ,返回该链表中倒数第k个节点。如果该链表长度小于k,请返回一个长度为 0 的链表。例如输入{1,2,3,4,5},2时,对应的链表结构如下图所示:其中蓝色部分为该链表的最后2个结点,所以返回倒数第2个结点(也即结点值为4的结点)即可,系统会打印后面所有的节点来比较。解题思路:设置两个指针,flag和cur,flag到达链表尾部的时候,flag与cur之间的距离标识k值。解题代码:/** * struct ListNode {原创 2021-12-13 23:02:09 · 799 阅读 · 0 评论 -
链表-合并两个排序的列表
题目:输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序的。要求:空间复杂度 O(1)O(1),时间复杂度 O(n)O(n)如输入{1,3,5},{2,4,6}时,合并后的链表为{1,2,3,4,5,6},所以对应的输出为{1,2,3,4,5,6},转换过程如下图所示:解题思路:题目中有很重要的一个信息是:两个链表都是递增的。说明最终合成的列表的第一个结点,一定是两个链表的头结点中较小的那个。而结果链表接下来的结点,应该是两个链表接下来的结点中较小的结点。原创 2021-12-12 23:40:36 · 129 阅读 · 0 评论 -
剑指offer 连续子数组的最大和(二)
连续子数组的最大和(二)题目要求:输入一个长度为n的整型数组array,数组中的一个或连续多个整数组成一个子数组,找到一个具有最大和的连续子数组。1.子数组是连续的,比如[1,3,5,7,9]的子数组有[1,3],[3,5,7]等等,但是[1,3,7]不是子数组2.如果存在多个最大和的连续子数组,那么返回其中长度最长的,该题数据保证这个最长的只存在一个3.该题定义的子数组的最小长度为1,不存在为空的子数组,即不存在[]是某个数组的子数组4.返回的数组不计入空间复杂度计算题解:题目有两个要求原创 2022-03-03 16:45:23 · 381 阅读 · 0 评论