
剑指offer系列
剑指1
好像也没什么大不了
热爱生活,热爱你
展开
-
【20230303】【剑指1】模拟(中等)
提交一直有问题,等有时间搞一下数组遍历的专题。原创 2023-03-03 16:01:04 · 65 阅读 · 0 评论 -
【20230302】【剑指1】数学(中等)
n个数组成一个圆圈,每次删除第m个数约瑟夫环问题,动态规划假定输入n,m记为【n,m问题】,设剩下的数为f(n);则有【n-1,m问题】:数字环0,1,2...n-2,解为f(n-1)。原创 2023-03-02 10:41:11 · 78 阅读 · 0 评论 -
【20230301】【剑指1】数学(简单)
理论上用摩尔投票法空间复杂度能得到简化,但是奈何实在难以看懂,暂时先用哈希解决吧。原创 2023-03-01 10:05:33 · 73 阅读 · 0 评论 -
【20230227】【剑指1】位运算(简单)
若n&1=1,则n的二进制最右一位为1。根据按位与运算,若n&1=0,则n的二进制最右一位为0;原创 2023-02-27 15:46:47 · 71 阅读 · 0 评论 -
【20230225】【剑指1】分治算法(中等)
需要注意的是n的取值范围,可以发现当n为最小值时,直接取反会导致整型溢出,于是需要将这种情况单独进行讨论。每次遇到乘法时,都得防止发生溢出,利用如下公式,对每次a与乘出的结果都做一次取模运算;如下图所示,在幂运算过程中仍然可以递归,这样可以实现O(logn)的时间复杂度;找到切割点后,右子树的所有点应该比根结点的值才对,否则返回false。归根结底仍是数组与二叉树之间的转换问题,那么就离不开寻找切割点; 如下图所示,每次都可以将数组中的。b是一个数组,应该如何处理?如何高效的进行幂运算?原创 2023-02-26 16:07:54 · 418 阅读 · 0 评论 -
【20230224】【剑指1】搜索和回溯算法(中等)V
要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?只要从上往下遍历,出现的第一个在p、q之间的节点,就一定为最近的公共祖先。如何判断一个节点是p、q的最近公共祖先?运用逻辑运算符的短路效应。原创 2023-02-24 15:17:53 · 64 阅读 · 0 评论 -
【20230222】【剑指1】搜索和回溯算法(中等)IV
这两天都是基础题,又都刚刚复习过,直接默写!原创 2023-02-22 19:28:30 · 67 阅读 · 0 评论 -
【20230221】【剑指1】排序(中等)II
Type 就是数据类型,Container 就是容器类型(Container必须是用数组实现的容器,比如vector,deque等等,但不能用 list。STL里面默认用的是vector),Functional 就是比较的方式,当需要用自定义的数据类型时才需要传入这三个参数,使用基本数据类型时,只需要传入数据类型,默认是大顶堆。具有队列的所有特性,包括基本操作,只是在这基础上添加了内部的一个排序,它本质是一个堆实现的。,将所有小于基准数的元素移动至其左边,大于基准数的元素移动至其右边。原创 2023-02-22 10:43:06 · 272 阅读 · 0 评论 -
【20230221】【剑指1】排序
但是就(s1+s2)原创 2023-02-21 17:01:55 · 66 阅读 · 0 评论 -
【20230220】【剑指1】回溯与搜索算法II
我这里有疑问的是 对pre、head的初始化,用new就不行了,为啥呢?我们需要定义两个指针,来记录遍历的前一节点pre与头节点head。首先面对二叉搜索树,如果用中序遍历,则可以变成有序的形式。原创 2023-02-20 20:55:18 · 82 阅读 · 0 评论 -
【20230218】【剑指1】搜索与回溯算法
回溯三部曲:回溯函数模板返回值及参数回溯函数终止条件回溯搜索的遍历过程。原创 2023-02-18 11:20:12 · 75 阅读 · 0 评论 -
【20230217】【剑指1】双指针(简单)III
1.首先得去除多余空格,双指针法,快慢指针,类似于数组中的移除元素,当快指针不为空格时就存到slow上,并且在fast找到字母时判断此时slow是不是在句首,不然的话,要加个空格;当fast比size小,并且一直为字母时,就一直赋给slow;resize改变原字符串大小,resize(slow)4.用i去遍历,当找到一个空格时,就反转一个,或者就只有一个单词(i==s.size())left从左出发,right从右出发。但是利用本身数组为有序数组的特性。2.写个反转字符串的函数。3.先反转整个字符串。原创 2023-02-17 14:32:48 · 125 阅读 · 0 评论 -
【20230216】【剑指1】双指针(简单)II
【代码】【20230216】【剑指1】双指针(简单)II。原创 2023-02-16 16:19:16 · 77 阅读 · 0 评论 -
【20230215】【剑指1】双指针(简单)
2.链表中倒数第K个节点。删除节点 用虚拟头节点。原创 2023-02-15 13:08:38 · 67 阅读 · 0 评论 -
【20230214】【剑指1】动态规划(中等)II
双指针,判断有无重复的字符串,用unordered_map判断,滑动窗口。类似于爬楼梯,只不过要进行判断,不大于26才能选择爬一层或者爬两层。其中int与string的转化,以及char与int的转化。到s[i]为止,最多有dp[i]种翻译方法。确定dp数组及其下标。原创 2023-02-14 15:12:44 · 68 阅读 · 0 评论 -
【20230213】【剑指1】动态规划(中等)
dp[i]有两种可能,一个是此时的nums[i]仍在连续数组范围内,还有一种为从它开始为连续数组的起点。dp[i]表示以nums[i]结尾的最大连续子数组和为dp[i]dp[i][j]表示在grid数组中i,j位置时最大的礼物价值。第一行和第一列特殊,直接加,只有一种路径。确定dp数组及其下标的含义。确定dp数组及其下标的含义。原创 2023-02-13 19:41:48 · 69 阅读 · 0 评论 -
【20230212】【剑指1】动态规划
dp[i][0]代表第i天持有股票所得最多现金,dp[i][1]代表第i天未持有股票所得最多现金。这里就用二位数组,空间复杂度稍微高点。确定dp数组及其下标的含义。确定遍历顺序 从前往后。原创 2023-02-12 11:08:01 · 85 阅读 · 0 评论 -
【20230211】【剑指1】搜索与回溯算法II
b) 每次如果匹配失败,必须让B从头开始匹配,而不是直接单层递归compare(A->left,B)||compare(A->right,B),因为此时的B可能是上一层递归传过来的B->next,并不是B真正的根节点;就是对一个对称的数据结构(这里指二叉树)从整体的对称性思考,把大问题分解成子问题进行递归,即不是单独考虑一部分(比如树的左子树),而是同时考虑对称的两部分(左右子树),从而写出对称性的递归代码。a) 当B遍历完了,A也遍历完了或者B遍历完了,A还没遍历完,那么B就是子结构;原创 2023-02-11 16:19:52 · 633 阅读 · 0 评论 -
【20221225】【剑指1】链表
指向链表中的 任意节点 或者 nullnull。这个 random 指针意味着在复制过程中,除了构建前驱节点和当前节点的引用指向 pre.next ,还要构建前驱节点和其随机节点的引用指向 pre.random。可以用rbegin,rend;也可以用reverse翻转数组。的键值对映射关系,再遍历构建新链表各节点的。给定链表的头节点时,复制链表变得简单,如果没有random指针时,利用哈希表的查询特点,构建。1、从尾到头打印链表。原创 2022-12-25 15:00:12 · 1009 阅读 · 0 评论 -
【20221228】【剑指1】查找算法(中等)
算法复杂度O(n+m),从横纵来看都只进行了一次遍历。3、第一个只出现一次的字符。2、旋转数组的最小数字。1、二维数组中的查找。原创 2022-12-28 21:36:45 · 423 阅读 · 0 评论 -
【20221227】【剑指1】查找算法
方法三:鸽巢原理,因为出现的元素值 < nums.size();所以我们可以将见到的元素 放到索引的位置,如果交换时,发现索引处已存在该元素,则重复 O(N) 空间O(1)。利用unordered_map查询效率是O(1),如果没有重复就添加进去,重复了就返回。方法二:先排序,查找相邻元素是否有相等。有序数组的搜索还是得用二分法。3、0~n-1中缺失的数字。1、数组中重复的数字。原创 2022-12-27 19:25:52 · 93 阅读 · 0 评论 -
【20221229】【剑指1】搜索和回溯算法
按之字形打印,添加一个标志位对奇偶行进行判断即可。3、从上到下打印二叉树III。2、从上到下打印二叉树II。1、从上到下打印二叉树。层序遍历,广度优先算法。和1一样,仍然用层序。原创 2022-12-29 11:23:57 · 99 阅读 · 0 评论 -
【20221224】【剑指1】栈和队列
需要注意的是:只有当负责出的栈为空时,再从负责进的栈里将数据全部导入(如果两个栈都空了,则表示队列空了)2、包含min函数的栈(用栈实现栈,听起来有点蠢)两个栈,一个栈负责进,一个栈负责维护最小值。两个栈来实现,一个负责进,一个负责出。1、用两个栈实现队列。原创 2022-12-24 19:53:46 · 103 阅读 · 0 评论 -
【20221226】【剑指1】字符串
先确定空格数量,再用双指针法,从后往前遍历。原创 2022-12-26 17:51:20 · 84 阅读 · 0 评论