- 博客(17)
- 收藏
- 关注
原创 刷题笔记 739. 每日温度 (单调栈),215. 数组中的第K个最大元素(堆),347.前 K 个高频元素
739. 每日温度 (单调栈). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。第一次刷有思路,但是写不出来卡在细节处理,忘记把最后的stack.appned(i)加上,因为要把新遍历的比原先大的数放在栈顶。这题的思路其实不难,写题应该是要先看出要用什么技巧,然后再找到对应的数据结构。而不是知道要用栈,再去硬套。我们来分析一下,要找出数组位置下一个比这个位置更大的值与其之间的距离。
2024-07-21 22:06:19 765
原创 算法训练day15| 226.翻转二叉树 ,102. 二叉树的层序遍历,101. 对称二叉树
注意上面最后一种情况,我没有使用else,而是else if, 因为我们把以上情况都排除之后,剩下的就是 左右节点都不为空,且数值相同的情况。因为我们要比较的是根节点的两个子树是否是相互翻转的,进而判断这个树是不是对称树,所以要比较的是两个树,参数自然也是左子树节点和右子树节点。如上代码中,我们可以看出使用的遍历方式,左子树左右中,右子树右左中,所以我把这个遍历顺序也称之为“后序遍历”(尽管不是严格的后序遍历)。对于二叉树是否对称,要比较的是根节点的左子树与右子树是不是相互翻转的,理解这一点就知道了。
2024-03-19 09:59:49 935 1
原创 测试基础(笔记未完善)
测试主流技术:1.功能测试(主要验证程序的功能是否满足);3.接口测试(使用代码或工具对服务端提供的接口进行测试);2.自动化测试(使用代码或工具替代手工测试,提高效率);4.性能测试(模拟多人使用软件,查找服务器缺陷);软件测试:使用技术手段检验软件是否满足使用需求;软件定义:控制计算机硬件工作的工具;软件测试的目的:减少bug;
2024-03-18 23:13:15 422
原创 算法练习day14|二叉树的理论基础、递归遍历、迭代遍历和统一遍历
此时我们用迭代法写出了二叉树的前后中序遍历,大家可以看出前序和中序是完全两种代码风格,并不像递归写法那样代码稍做调整,就可以实现前后中序。这是因为前序遍历中访问节点(遍历节点)和处理节点(将元素放进result数组中)可以同步处理,但是中序就无法做到同步!上面这句话,可能一些同学不太理解,建议自己亲手用迭代法,先写出来前序,再试试能不能写出中序,就能理解了。那么问题又来了,难道 二叉树前后中序遍历的迭代法实现,就不能风格统一么(即前序遍历 改变代码顺序就可以实现中序 和 后序)?
2024-03-18 23:12:11 889
原创 算法刷题day13 | 239. 滑动窗口最大值、347.前 K 个高频元素
寻找前k个最大元素流程如图所示:(图中的频率只有三个,所以正好构成一个大小为3的小顶堆,如果频率更多一些,则用这个小顶堆进行扫描)
2024-03-14 22:41:26 948 1
原创 算法Day11 | 20. 有效的括号(栈应用);1047. 删除字符串中的所有相邻重复项(栈应用), 150. 逆波兰表达式求值
输入: ["10", "6", "9", "3", "+", "-11", " * ", "/", " * ", "17", "+", "5", "+"]但还有一些技巧,在匹配左括号的时候,右括号先入栈,就只需要比较当前元素和栈顶相不相等就可以了,比左括号先入栈代码实现要简单的多了!第三种情况:遍历字符串匹配的过程中,栈已经为空了,没有匹配的字符了,说明右括号没有找到对应的左括号return false。给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
2024-03-14 21:58:26 823 1
原创 代码随想录算法训练营day08-字符串01
给定一个字符串 s 和一个正整数 k,请编写一个函数,将字符串中的后面 k 个字符移到字符串的前面,实现字符串的右旋转操作。一些同学会使用库函数,分隔单词,然后定义一个新的string字符串,最后再把单词倒序相加,那么这道题题目就是一道水题了,失去了它的意义。想一下,我们将整个字符串都反转过来,那么单词的顺序指定是倒序了,只不过单词本身也倒序了,那么再把单词反转一下,单词不就正过来了。总体而言,这个程序的作用是读取用户输入的字符串,将其中的数字字符替换为字符串"number",然后打印出来。
2024-03-12 10:36:46 1748 1
原创 代码随想录算法训练营Day07|15.三数之和|454.四数相加II |383.赎金信|18.四数之和
满足要求的四元组集合为: [ [-1, 0, 0, 1], [-2, -1, 1, 2], [-2, 0, 0, 2] ]拿这个nums数组来举例,首先将数组排序,然后有一层for循环,i从下标0的地方开始,同时定一个下标left 定义在i+1的位置上,定义下标right 在数组结尾的位置上。给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。,那么来讲解一下具体实现的思路。
2024-02-28 18:19:04 947
原创 代码随想录day06(哈希表)| 242.有效的字母异位词、349.两个数组的交集、202.快乐数、1.两数之和
如果 可以变为 1,那么这个数就是快乐数。在遍历数组的时候,只需要向map去查询是否有和目前遍历元素匹配的数值,如果有,就找到的匹配对,如果没有,就把目前遍历的元素放进map中,因为map存放的就是我们访问过的元素。需要定义一个多大的数组呢,定一个数组叫做record,大小为26 就可以了,初始化为0,因为字符a到字符z的ASCII也是26个连续的数值。那么判断元素是否出现,这个元素就要作为key,所以数组中的元素作为key,有key对应的就是value,value用来存下标。
2024-02-27 17:04:12 1768
原创 代码随想录算法训练营Day4 | | 24. 两两交换链表中的节点 ,19.删除链表的倒数第N个节点 , 面试题 02.07. 链表相交
可以使用快慢指针法,分别定义 fast 和 slow 指针,从头结点出发,fast指针每次移动两个节点,slow指针每次移动一个节点,如果 fast 和 slow指针在途中相遇 ,说明这个链表有环。其实这种情况和n为1的时候 效果是一样的,一样可以通过这个方法找到 环形的入口节点,只不过,index1 指针在环里 多转了(n-1)圈,然后再遇到index2,相遇点依然是环形的入口节点。为什么fast 走两个节点,slow走一个节点,有环的话,一定会在环内相遇呢,而不是永远的错开呢。
2024-02-26 15:25:18 1868 1
原创 代码随想录算法训练营day03 | 203.移除链表元素、707.设计链表、206.反转链表
接下来说一说链表的定义。链表节点的定义,很多同学在面试的时候都写不好。这是因为平时在刷leetcode的时候,链表的节点都默认定义好了,直接用就行了,所以同学们都没有注意到链表的节点是如何定义的。而在面试的时候,一旦要自己手写链表,就写的错漏百出。// 单链表int val;// 节点上存储的元素// 指向下一个节点的指针ListNode(int x) : val(x), next(NULL) {} // 节点的构造函数。
2024-02-25 21:32:05 975 1
原创 代码随想录算法训练营第二天 | 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵
不要以为for里放一个while就以为是O(n^2)啊, 主要是看每一个元素被操作的次数,每个元素在滑动窗后进来操作一次,出去操作一次,每个元素都是被操作两次,所以时间复杂度是 2 × n 也就是O(n)。这里一圈下来,我们要画每四条边,这四条边怎么画,每画一条边都要坚持一致的左闭右开,或者左开右闭的原则,这样这一圈才能按照统一的规则画下来。在暴力解法中,是一个for循环滑动窗口的起始位置,一个for循环为滑动窗口的终止位置,用两个for循环 完成了一个不断搜索区间的过程。
2024-02-23 01:48:11 968
原创 代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素
例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。二分查找这是查找算法中较为常见的一种了,在写数组的二分查找时需要借助左右两个指针分别指向数组的首尾,通过判断中间值来决定移动左右指针中的哪一个指针。输入:nums = [3,2,2,3], val = 3。
2024-02-22 17:48:57 328 1
原创 第三章 程序的机器级表示
哟啊注意这里的16是10进制数,后面的0x110是16进制数,所以下面的式子没问题。pc给出将要执行的下一条指令在内存中的地址。(movq 是前面的复制给后面的);被调用者保存(上);例子:被调用者保存模式。mov指令的特殊情况。
2023-06-22 16:20:41 65 1
原创 计算机系统2 第二章信息的表达和处理
大多数计算机使用8位的块,或者字节(byte),作为最小的可寻址的内存单位,而不是访问内存中单独的位。内存的每个字节都由一个唯一的数字来标识,称为它的地址(address),所有可能地址的集合就称为虚拟地址空间( virtual address space)。指针是由数据类型和指针值构成的,它的值表示某个对象的位置,而它的类型表示那个位置上所存储对象的类型(比如整数或者浮点数)。,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致。
2023-06-16 17:47:35 88 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人