- 博客(11)
- 收藏
- 关注
原创 二叉树(一)
(一)前序遍历reeNode类定义了二叉树的节点结构,每个节点包含一个值和两个子节点引用。Solution类中的方法用于实现二叉树的前序遍历。在方法中,首先定义了一个空列表res,用来存放遍历过程中访问的节点值。定义了一个内部递归函数dfs,它接受一个节点node作为参数。在dfs函数中,首先检查节点是否为None,如果是,则直接返回,这是递归的终止条件。如果节点不为空,首先将该节点的值添加到res列表中,这是前序遍历的特点,即先访问节点本身。接着,递归调用dfs函数访问当前节点的左子树。
2024-08-06 23:52:03
923
原创 栈和队列(二)
给你一个字符串数组tokens,表示一个根据表示的算术表达式。请你计算该表达式。返回一个表示表达式值的整数。'+''-''*''/'逆波兰值表达式就是将一个数学计算式后序排序的一段数字。
2024-08-05 23:12:57
610
原创 栈和队列(一)
栈实现队列的主要思路:1,就是用两个栈来实现队列,一个栈专门用来“进入”stack_in,一个栈专门用来“出去”stack_out。2,python栈主要是用列表实现的。下面是python列表中常用的函数。3,push(添加函数的实现)就是在stack_in中在列表尾部添加一个元素。4,获取开头元素并返回(pop),首先先判断一下stack_out是否为空,如果不是空的话,直接删除并返回stack_out的开头元素;然后如果是空的话,就把stack_in里的元素都传到stack_out里。
2024-07-30 23:57:28
262
原创 字符串(二)
给你一个字符串s,请你反转字符串中的顺序。是由非空格字符组成的字符串。s中使用至少一个空格将字符串中的分隔开。返回顺序颠倒且之间用单个空格连接的结果字符串。输入字符串s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。s = "反转后的字符串中不能存在前导空格和尾随空格。如果两个单词间有多余的空格,反转后的字符串需要将单词间的空格减少到仅有一个。
2024-07-30 21:12:27
267
原创 字符串(一)
题目:编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组s的形式给出。不要给另外的数组分配额外的空间,你必须、使用 O(1) 的额外空间解决这一问题。核心思路:使用双指针法来反转字符串。初始化两个指针,一个指向字符串的开始位置(左指针),另一个指向字符串的结束位置(右指针)。然后,在遍历字符串长度的一半时,交换左右指针指向的字符,并将左指针向右移动,右指针向左移动。通过这种方式,字符串的字符从两边向中间逐渐交换位置,直到所有字符都被反转。最后,返回反转后的字符串。
2024-07-25 23:01:17
759
原创 哈希表(二)
题目:给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。
2024-07-24 21:55:54
1043
原创 哈希表(一)
哈希表主要有三种表现方式,在python中主要有列表(list),字典(dict),集合(set)题目:给出两个字符串,比较这两个字符串的元素是不是都是出现过,只是位置不一样。核心思路(用数组(python中列表)实现的哈希法):(1)首先创建一个列表hash,大小是26个元素,对应26个字母(2)再遍历一下第一个字符串,将出现过的字符在列表hash里记录该字符出现的次数。
2024-07-22 22:50:13
416
原创 链表(二)
我们采取虚拟头结点(有一个指针专门指向头结点,方便对头结点的操作)的方式来处理链表。首先,我们把头结点接到第二个结点上,然后再把第二个结点的next指向第一个结点,然后再将第一个结点的next接到第三个结点上。
2024-07-21 22:33:40
391
原创 链表(一)
核心思路:要删除一个链表的元素,一定。从代码的角度就是。然后再调用它们的next来实现删除操作(cur.next = cur.next.next)。
2024-07-19 20:54:49
401
原创 数组(二)
题目:一个有序数组如 nums=[-3,-1,0,3,10],将每一个元素平方后,也用从小到大的顺序排序,得到一个新数组。(1)暴力算法就是利用两个for循环将每一个元素平方后再排序,这个算法的时间复杂度是 O(n + nlogn),这种解法思路简单同时耗时较长。(2)双指针法该数组是一个有序数组,它的特征就是数组平方的最大值必然在数组的两端(left或right)。这里利用双指针的思想,如下图(源自代码随想录网站)注意:这个解法要注意while循环的条件,这个“i <= j”一定要加"="。
2024-07-18 21:40:21
427
原创 数组(一)
每一个索引对应的元素都是有可能是目标元素,会出现left=right的情况,故当使用左闭右闭的写法,其while循环条件时就必须考虑left=right的情况,左闭右闭的特点:1.while (left <= right) 要使用 <= ,因为left == right是有意义的2.right要用middle-1赋值,left要用middle+1赋值。因为nums[middle]一定不是target,所以可以直接跳过。左闭右开主要是不考虑right,即right不在范围内。
2024-07-17 22:19:30
205
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅