自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 day11剑指50 52 53(i,ii) 54

思路:同样是二分搜索但没有给出显式的target可以与mid作比较,寻找规律如果 nums[mid] 和 mid 相等,则缺失的元素在右半边,如果 nums[mid] 和 mid 不相等,则缺失的元素在左半边。一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。只不过常规的中序遍历得到的顺序是从小到大的,而我们想得到从大到小的顺序。思路:使用双指针,从逻辑上将链表A和B连接到一起,这样在到达公共结点前经历的步数是一样的,即遍历完A链表后继续转到链表B。

2023-08-16 00:08:22 74

原创 day10 剑指 45 46 47 48 49

在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,。2.如果最高位的数字相同,那么次高位的数字较小的排在前面,如果次高位数字也相同,就比较次次高位,以此类推。思路,使用动态规划,先将数字转化为字符串,遍历一个字符有两种可能,一个是单独翻译,一个是和前面一起翻译。输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。

2023-08-10 14:11:23 99

原创 day 09 剑指39 40 41 42 43

思路:使用两个优先队列,一个使用最大堆存放一半的较小的值,一个使用小顶堆存放一半的较大的值,如果长度为奇数两边长度不一样选更长的那个的top()就是中位数,否则为偶数,二者长度相同,相加除2。思路:动态规划 dp[i]代表当前下标子数组和的最大值,有两种可能,一种是dp[i-1]和nums[i]拼接形成新的数组,另一种是另起炉灶。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。例如,输入12,1~12这些整数中包含1 的数字有1、10、11和12,1一共出现了5次。

2023-08-08 12:06:23 68

原创 day 08剑指 32(I,ii,iii)33 34 35 36 38

第二个循环遍历原始链表,通过映射关系,将复制链表节点的 next 指针和 random 指针指向正确的节点。第一个循环遍历原始链表,对于每个节点 cur,创建一个新的节点,并将其值设置为 cur 的值。通过使用哈希表(unordered_map)建立原始链表节点和复制链表节点的映射关系,可以实现在 O(1) 时间复杂度内找到对应的节点,从而实现高效地复制带有随机指针的链表。该分界点 flag 及其左边的应该都在左子树,左子树都应小于根节点,如果有不小于的根节点的数,则一定不是二叉搜索树,返回 false;

2023-08-04 16:53:38 179

原创 day 07剑指 22 24 25 26 27 28 29 30 31

例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。思路:可以将其进行复制,看成两个相同的树是否对称,A的左子树和B的右子树是否一致,A的右子树和B的左子树是否一致。定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。

2023-08-04 10:00:10 170

原创 day 06 剑指19 20 21

③若是e或E要判断前面是否出现过e或者E以及是否存在过数字(ise_orE isnum)然后将ise_orE置为true,isnum置为false因为e/E后面需要出现数字才可以。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab。输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分。模式中的字符’.‘表示任意一个字符,而’a"匹配,但与"aa.a"和"ab*a"均不匹配。思路3:双指针,交换奇偶数。

2023-08-02 12:14:51 65

原创 day 05 剑指15 16 17 18

编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为 汉明重量).)。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。需要返回链表的头节点,则不能对head做操作,需要自己新建结点来操作,并创建一个虚拟头节点dummyhead。给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。思路:计算一个数二进制中1的个数,用位运算中的与运算即可。

2023-08-02 09:21:22 72

原创 day 04剑指 12 13 14

一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。需要注意的是,私有类声明的变量需要在其他地方进行赋值,在public中不应该使用int m ,int n而是直接m=,n=每个格子都对相邻的四个格子判断字母是否是字符串word的后一个字符,如果是的话沿着这个格子继续判断,否则返回上一层;

2023-07-31 14:38:16 60

原创 day 03 剑指11(153 154 33 81)搜索旋转排序数组

若 nums[mid] <= target <= nums[right],说明 target 位于右侧区间。若 nums[left] <= target <= nums[mid],说明 target 位于左侧。若 nums[left] <= nums[mid],说明左侧区间 [left,mid]「连续递增」。同之前一样,有重复元素需要对于nums[left]=nums[mid]时进行顺序查找。否则,令 right = mid-1,在左侧区间查找。否则,令 left = mid+1,在右侧区间查找。

2023-07-21 18:24:40 146

原创 day03 剑指07 09

用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。思路:s1的元素压入s2中,两次先进后出负负得正变成队列先进先出。剑指 Offer 09. 用两个栈实现队列。

2023-07-21 11:51:41 59

原创 day 2 剑指05 06

auto 是一种类型推断关键字,用于在编译时自动推断变量的类型。它可以帮助简化代码,提高可读性,并减少类型冗余。请实现一个函数,把字符串 s 中的每个空格替换成"%20"。c++中string字符串插入方式有如下几种。剑指 Offer 05. 替换空格。

2023-07-20 10:41:26 103

原创 day 1 剑指offer 03 04

刷题

2023-07-19 14:07:38 71

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除