代码随想录
文章平均质量分 91
起床写代码啦!
一个菜鸡
展开
-
代码随想录(day10)——栈和队列
在遍历完成后,在此对栈进行一次检测,如果此时栈为空,则说明给定字符串中的括号的左半部分的数量大于右半部分,返回。在遍历过程中,出现了栈为空的情况,则说明字符串中的括号的右半部分的数量大于左半部分,因此,返回。对于上面给出的范例,不难看出,由于右括号多了若干个,因此也不满足有效括号的定义。位置的内容等于三种括号的左半部分,则向栈中压入这个括号的右半部分。的最后一个字符与给定字符串的字符不同,则将给定字符串的字符插入到。如果不相等,则说明括号不匹配,直接返回。随后,再去检测给定字符串中的字符,如果其不等于。原创 2024-03-30 16:48:55 · 885 阅读 · 0 评论 -
代码随想录(day9)——栈和队列
用于向外弹出元素。例如对于上题中的队列,如果需要让队列弹出元素,弹出的元素应该为。,由于需要返回并移除的栈顶元素正是队列中的最后一个,因此,让队列中的前。对于本题,需要利用两个栈来模拟实现队列,此处分别命名为。由于题目需要移除并且返回这个元素,因此先创建一个变量。向队列中插入元素即可。来存储队列中的第一个元素,随后,利用。在各自出元素时,栈弹出的元素为。但是对于栈来说,其弹出的元素为。保存栈弹出的元素,随后利用。是否为空,如果为空,则让。,直接利用队列中的接口。,直接利用队列中的接口。原创 2024-03-30 13:55:53 · 381 阅读 · 0 评论 -
代码随想录(day8)——字符串
对于多余的字符,分别为第一个字符前面的空格和最后一个字符后面的空格,以及两个单词之前非第一个空格。中倒置字符串一题极为相似,但是对于本题,单词之间的空格并不是只有一个,而是若干个。对于本题,题干中的条件看起来十分复杂,其实可以归结于一种分支情况,即每次都读取给定字符串。对于第二种方法,可以首先遍历一遍给定的字符串,并且创建一个变量。来进行的,所以,在遍历整体的字符串时,每次都遍历。由于对于字符串的反转,每次都是以。此时的字符串的大小就等于将所有的数字都改为。,因此,直接对剩余的字符全部进行反转即可。原创 2024-03-23 15:23:14 · 932 阅读 · 0 评论 -
代码随想录(day7)——哈希表
对于三数之和这道题,相对于两数之和的难度有明显的上升,如果说两数之和作为梦开始的地方,那么三数之和可以说是梦结束的地方。这是因为本题相对于两数之和只需要控制两个变量进行判断变成了需要控制三个变量,并且,题目中要求了答案中不可以包含重复的三元组,例如。虽然文章的标题为哈希表,但是对于三数之和,以及后面的四数之和,使用双指针的方法能更加容易的解决问题。,要么数组中同时存在正数,负数,所以,如果数组的第一个数已经。再排序完成后,由于题目要求需要找到三个数的和。的元组的数量,对于这个问题,可以抽象的看成,查找在。原创 2024-03-20 18:45:19 · 728 阅读 · 0 评论 -
代码随想录(day6)——哈希表
但是在题干中,提到了在求快乐数的过程中,将这个数替换为每个位置上的数字的平方和的过程是无限循环的,例如文章给定一个数。因此,如果运算次数够多,对于任何一个数,均存在一个无限循环。,假设,每进行一次上方的运算,都会得到一个属于上面区间中的不同的数值,那么,在进行。如果对这个最大的数值进行一次上面的操作,则不难得出,这个数是一定小于。中出现过,如果出现过,则说明进入了上图中非快乐数的死循环,返回。的,因此,对于这个数据在求解快乐数时产生的数据的范围一定是。,只有在给定字符串长度想的的情况下才进行下一步的判断。原创 2024-03-17 16:18:43 · 1006 阅读 · 0 评论 -
代码随想录(day4)——链表
本题较为简单,在题干中可以看到,系统给定的样例存在空链表,因此,为了避免空链表造成的访问错误,本题也采用人为添加哨兵位头结点的方式。在演示了上述过程后,不难看出,如果想要交换两个结点需要在这两个结点中,靠前一个结点的前一个结点最为起始结点开始操作,对于上述链表,如果想要对。结点后,进行下一次交换操作的起始结点应该为链表中的第四个结点。因此,对于链表中结点个数为奇数个的情况,应该检查结点的下下个结点是否为空。但是,这种情况只适用于链表中的结点为偶数个。结点操作后,下一次进行操作的起始结点的位置在链表中的第。原创 2024-03-14 21:53:00 · 964 阅读 · 0 评论 -
代码随想录(day3)——链表
在进了了上面的删除后,此时链表中,所有需要删除的头结点都已经被删除。因此,为了解决上述问题,可以在给定的链表的头结点之前,人工添加一个哨兵位头结点。对于本题,难点就在于对于头部结点的删除,以及给定链表为空时,如何进行遍历。对于删除结点函数,需要注意,按照删除结点的逻辑,在遍历时,能遍历到的最后一个结点便是链表中倒数第二个结点。在此处,考虑到遍历链表的过程中,需要不断访问不同的结点,因此,再设置一个专门用于遍历链表的结点。,如果不检查,在检查结点的值这一条件是否满足删除所对应的条件时,由于。原创 2024-03-12 23:57:50 · 908 阅读 · 0 评论 -
代码随想录(day2)——数组
由于数组中存在负数,并且,题目中给出了给定的整数数组是按照非递减顺序排序的,因此,在抛去两个元素相等的情况下,数组中的第一个元素,一定是数组中最小的负数,数组中最后一个元素,绝对是数组中最大的一个正数。对于滑动窗口,起始可以看作一种特殊的双指针,对于之前的双指针,针对于目标都是单个具体的元素,但是对于滑动窗口,两个指针表示一个区间的起始位置和终止位置。如上图所示,对于螺旋矩阵的四个边,需要分四次进行处理,为了降低临界条件对于复杂度的影响,在处理螺旋矩阵的第一行时,只向里面填充四个元素,即。原创 2024-03-09 23:33:26 · 984 阅读 · 0 评论 -
代码随想录(day1)
但是由于上述移除元素的过程,将这些元素整体向前移动了一位,因此,为了针对这种特殊情况,需要将。由于数组是一块连续空间,因此,在删除数组中的元素时,并不能直接进行删除,例如删除下列给出数组中值为。题目中要求,需要在不开辟额外空间的情况下,额外修改数组,删除数组中数值等于。对于上述过程,看作一次移除元素,由于移除了一次元素,因此需要将数组的长度。对于数组中的删除,其实是对于元素的覆盖,例如,删除上面数值为。,表示需要查找的元素在数组的右半部分,此时需要更新。,表示需要查找的数在数组的左半部分,此时需要更新。原创 2024-03-06 23:43:40 · 1132 阅读 · 0 评论