自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 day11打卡.有效的括号 and 删除字符串中的所有相邻重复项 and 逆波兰表达式求值

if(tokens[i]=="*"){ //遇到* / + - 就从栈里取出前两个元素进行运算,细节:注意一定是取出的后一个元素在前,然后+ - * / 前一个元素,因为栈是先进后出 eg: ["4","13","5","/","+"] 原本除法是13/5,但是由于栈里面从顶到底的顺序是5 13 4 所以取出后若直接5 / 13 与题意不符,所以是后一个元素在先13/5。// 第三种情况:遍历字符串匹配的过程中,栈已经为空了,没有匹配的字符了,说明右括号没有找到对应的左括号 return false。

2024-04-28 00:29:32 1797

原创 day10打卡.用栈实现队列 and 用队列实现栈

public://直接将元素存入栈里(也就是队列que1中)size--;//因为需要只剩下原栈顶元素,从而循环que1.size() -1while(size--){ //将que1中的元素全部再次添加到que1尾部,除了原本que1最后一个元素,也就是栈顶元素,因为后面需要出栈 // 将队列头部的元素(除了最后一个元素外) 重新添加到队列尾部//将que1队列中队头元素放到队列2中que1.pop();//出队​。

2024-04-26 19:39:33 1942 1

原创 补打卡day07.四数相加II and 赎金信 and 三数之和 and 四数之和

四数之和的双指针解法是两层for循环nums[k] + nums[i]为确定值,依然是循环内有left和right下标作为双指针,找出nums[k] + nums[i] + nums[left] + nums[right] == target的情况,三数之和的时间复杂度是O(n^2),四数之和的时间复杂度是O(n^3)。if(nums[i]+nums[k]>target&&nums[i]+nums[k]>0&&target>0){ //将nums[i]+nums[k]看成一个整体进行剪枝。

2024-04-26 00:18:49 867 1

原创 补day06打卡. 有效的字母异位词 and 两个数组的交集 and 快乐数 and 两数之和

std::set和std::multiset底层实现都是红黑树,std::unordered_set的底层实现是哈希表, 使用unordered_set 读写效率是最高的,并不需要对数据进行排序,而且还不要让数据重复,所以选择unordered_set。std::unordered_set底层实现为哈希表,std::set 和std::multiset 的底层实现是红黑树,红黑树是一种平衡二叉搜索树,所以key值是有序的,但key不可以修改,改动key值会导致整棵树的错乱,所以只能删除和增加。

2024-04-25 22:18:53 797 1

原创 day04打卡.两两交换链表中的节点 and 删除链表的倒数第N个结点 and 链表相交 and 环形链表

可以使用快慢指针法,分别定义 fast 和 slow 指针,从头结点出发,fast指针每次移动两个节点,slow指针每次移动一个节点,如果 fast 和 slow指针在途中相遇 ,说明这个链表有环。其实这种情况和n为1的时候 效果是一样的,一样可以通过这个方法找到 环形的入口节点,只不过,index1 指针在环里 多转了(n-1)圈,然后再遇到index2,相遇点依然是环形的入口节点。//先求出链表的长度,以便于找到同一起点上的共同部分(此部分的从A.B表后面开始相等,直到结束)while(fast!

2024-04-21 22:35:44 824

原创 day03打卡. 移除链表元素 and 设计链表 and 翻转链表

while (index--) { //写成--index就会陷入死循环(任何非零值都被视为 `true`) 且要保证第0个结点是cur->next才能在前一个结点进行操作。while (index--) { //写成--index就会陷入死循环(任何非零值都被视为 `true`) 且要保证第0个结点是cur->next才能在前一个结点进行操作。= nullptr && head->val == val) { //注意判空,且不能使用if,否则只能删除一个头结点, eg: {7,7,7}

2024-04-20 12:56:36 664

原创 Day02打卡.有序数组的平方 and 长度最小的子数组 and 螺旋矩阵

按照左闭右开规则进行模拟:首先给定一系列初始值,然后循环n/2次(理由:依据对称可以发现),先填入第一行的值,但是第一行最后一个元素不填,因为是左闭右开,然后是填入最后一列,同理,最后一列的最后一个元素不填,再然后是最后一行,从右往左进行填写,第一列的最后一个元素不填,最后就是从下往上填写第一列,第一个元素不填,第一圈结束,然后更新startx,starty,填写内层的值,以此类推,如果n是奇数,循环体内不会进行填写,最后进行单独判断填写。

2024-04-18 20:43:13 668

原创 Day01打卡.二分查找法与移除元素法

此方法是利用两个指针,一个进行寻找,另一个进行填补,若不是目标值的话,就将fast指向的元素赋给slow,若是目标值,则fast跳过,而slow不动,后续继续查找,不是的话,将fast指向的元素赋值给slow,刚好能覆盖住目标元素,即为删除,最后返回slow,而slow后的元素不用管,因为数组也是一种数据结构,不需要考虑后面的,且这些实现方法并没有改变元素的相对位置。示例 1: 给定 nums = [3,2,2,3], val = 3, 函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。

2024-04-17 13:36:19 1836 1

空空如也

空空如也

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

TA关注的人

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