![](https://img-blog.csdnimg.cn/35ce6ad3a7344bcd86203991b7c5b2e1.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
剑指offer
文章平均质量分 55
leetcode的30天剑指offer记录——个人向
发把大狙谢谢
我不是丁真
展开
-
剑指offer—day 14(回溯-1)
给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。例如,在下面的 3×4 的矩阵中包含单词 “ABCCED”(单词中的字母已标出)。对于每一个点,定义visit数组看是否已经走过每次向四个方向探索,只要有满足的即返回1,只要不满足即返回0,所以是 或式(dfs原创 2022-06-27 20:04:13 · 234 阅读 · 1 评论 -
剑指offer—day 13(双指针-3)
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分。\qquad输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。hash表:双指针:\qquad输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. “,则输出"student. a am I”。示例 1:略显sb的题目….原创 2022-06-27 19:52:53 · 219 阅读 · 0 评论 -
剑指offer—day 12(双指针-2)
输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。创建新表:递归:\qquad输入两个链表,找出它们的第一个公共节点。hash集合:先把A的结点全部加入unordered_set里面,然后逐一判断B的结点并加入即可…O(n)浪漫解法:m,n分别做模m的减法和模n的减法,指定一个数(相遇位置),m和n每次减一,多次以后,m与n会均为这个数,即相遇了?...原创 2022-06-23 22:00:52 · 324 阅读 · 0 评论 -
剑指offer—day 11(双指针-1)
给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。递归:\qquad输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。十分简单...原创 2022-06-23 21:44:24 · 207 阅读 · 0 评论 -
剑指offer—day 10(中级dp—2)
day 101.剑指 Offer 46. 把数字翻译成字符串【中等】2.剑指 Offer 48. 最长不含重复字符的子字符串【中等】1.剑指 Offer 46. 把数字翻译成字符串【中等】给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。示例 1:输入: 12258输出: 5解释: 12258有5种不同的翻译,分别是原创 2022-06-01 13:58:00 · 158 阅读 · 0 评论 -
剑指offer—day 9(中级dp—1)
day 91.剑指 Offer 42. 连续子数组的最大和【简单】2.剑指 Offer 47. 礼物的最大价值【中等】1.剑指 Offer 42. 连续子数组的最大和【简单】输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。示例1: 输入: nums = [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子数组 [4,-1,2,1]的和最大,为 6。int maxSubArray(vector<int&原创 2022-05-31 17:30:16 · 65 阅读 · 0 评论 -
剑指offer—day 7(递归:二叉树镜像)
day 71.剑指 Offer 26. 树的子结构【中等】思路:2.剑指 Offer 27. 二叉树的镜像【简单】思路3.剑指 Offer 28. 对称的二叉树【简单】思路1.剑指 Offer 26. 树的子结构【中等】输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构, 即 A中有出现和B相同的结构和节点值。例如:给定的树 A: 3 / \ 4 5 / \ 1 2给定的树 B: 4 / 1返回原创 2022-05-30 22:51:10 · 128 阅读 · 0 评论 -
剑指offer—day 8(初级dp)
day 81.剑指 Offer 10- I. 斐波那契数列【简单】矩阵乘法2.剑指 Offer 10- II. 青蛙跳台阶问题【简单】3.剑指 Offer 63. 股票的最大利润【中等】1.剑指 Offer 10- I. 斐波那契数列【简单】写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和原创 2022-05-31 17:10:46 · 129 阅读 · 0 评论 -
剑指offer—day 6(二叉树—层序)
day 061.剑指 Offer 32 - I. 从上到下打印二叉树【中等】1.剑指 Offer 32 - I. 从上到下打印二叉树【中等】从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。例如:给定二叉树: [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回:[3,9,20,15,7]class Solution {public: vector<int> levelOrder(TreeNode* root原创 2022-05-30 22:38:49 · 132 阅读 · 0 评论 -
剑指offer—day 5(查找:二维数组、hash表)
day 51.剑指 Offer 04. 二维数组中的查找【中等】2.剑指 Offer 11. 旋转数组的最小数字【简单】3.剑指 Offer 50. 第一个只出现一次的字符【简单】1.剑指 Offer 04. 二维数组中的查找【中等】在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15原创 2022-05-14 17:02:42 · 219 阅读 · 0 评论 -
剑指offer—day 4(二分法)
day 41.剑指 Offer 03. 数组中重复的数字【简单】2.剑指 Offer 53 - I. 在排序数组中查找数字 I【简单】3.剑指 Offer 53 - II. 0~n-1中缺失的数字【简单】1.剑指 Offer 03. 数组中重复的数字【简单】在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。思路:只需要找到任意的一个重复数字即可,直接遍历O(n)//原创 2022-05-14 16:45:30 · 160 阅读 · 0 评论 -
剑指offer—day 3(字符串)
day 31.剑指 Offer 05. 替换空格【简单】2.剑指 Offer 58 - II. 左旋转字符串【简单】1.剑指 Offer 05. 替换空格【简单】请实现一个函数,把字符串 s 中的每个空格替换成"%20"。string replaceSpace(string s) { int i=0; while(s[i]!='\0'){ if(s[i]==' '){ s[i]='%'; s.insert(i+1,"20"原创 2022-05-12 22:07:36 · 217 阅读 · 0 评论 -
剑指offer—day 2(链表)
day 21.剑指 Offer 06. 从尾到头打印链表【简单】思路:2.剑指 Offer 24. 反转链表【简单】思路:3.剑指 Offer 35. 复杂链表的复制 【中等】思路一 (哈希表+回溯)思路二 (迭代 + 节点拆分)相关知识vector的用法类的用法hash表的用法1.剑指 Offer 06. 从尾到头打印链表【简单】输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。思路:最简单的就是放数组里面逆置,因为返回vector,所以直接数组就可以。头插法、甚至用栈也可以原创 2022-05-12 19:54:51 · 262 阅读 · 0 评论 -
剑指offer—day 1(栈)
剑指offer—day 11.剑指 Offer 09. 用两个栈实现队列【简单】用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )用两个栈A,B;因为将A中的东西全部入栈到B中时,B中即为队列的顺序,只需要出栈B即可。并且在B为清空前,后续的值可以继续存入A,因为队列是FIFO,等到B清空了,再把A全部入栈st1中即可。cla原创 2022-05-07 18:56:54 · 95 阅读 · 0 评论