摘要:
110.平衡二叉树 给定一个二叉树,判断它是否是 平衡二叉树 解题 思路:判断左右孩子的高度差是否超过1,用-1表示是否是平衡二叉树。 终止条件:碰到空节点,返回高度0。 报错:当左/右子树不平衡是,直接返回-1,不用继续计算。 因为如果一个子树不平衡(即高度返回 -1),仍然继续计算另一个子树的高 阅读全文
摘要:
226.翻转二叉树 题目:给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 解题: 思路:遍历的过程中交换每个节点的左右孩子。 选择哪种遍历方式? 中序不行,左中右,左边子节点交换完,处理中间交换了左节点和右节点,再处理右节点去交换时这个右节点就是原来的左节点,所以有一边就一直没 阅读全文
摘要:
二叉树基本理论 一、种类 1)满二叉树 2)完全二叉树 3)二叉搜索树 4)平衡二叉搜索树:了解各种容器(map\set..)的底层实现? 二、存储方式 1)链式存储:构造用两个指针的链表 2) 顺序存储:下标i的节点,左孩子2i+1,右孩子2i+2,用的少 三、遍历方式 1)深度优先搜索:前序、中 阅读全文
摘要:
python语法: 一、python不支持栈,通常使用列表(list)来模拟栈。append(),pop() 点击查看代码 stack = [] # 压栈(push) stack.append(1) # 弹栈(pop) top_element = stack.pop() # 查看栈顶元素(peek) 阅读全文
摘要:
151.反转字符串中的单词 题目:给你一个字符串 s ,请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。 注意:输入字符串 s中可能会存在前导空格、尾随空格或者单词间 阅读全文
摘要:
344.反转字符串 题目:编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 解题: 思路:双指针,秒了 点击查看代码 class Solution: def reve 阅读全文
摘要:
454.四数相加 题目:给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足: 0 <= i, j, k, l < n nums1[i] + nums2[j] + nums3[k] + nums4[l] = 阅读全文
摘要:
哈希表 常见的三种哈希结构:数组、set(集合)、map(映射) 要快速判断一个元素是否出现集合里,考虑哈希法! 242.有效的字母异位词 题目:给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为 阅读全文
摘要:
24. 两两交换链表中的节点 题目:给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 解题: 关键: cur的位置在要交换的两个节点的前面 具体如何交换的操作!! while种植条件:cur的下一个和下下个都不为空, 阅读全文
摘要:
python定义链表 val:数据域,节点存储的元素。 next:指针域,指向下一个节点的指针,最后一个节点指向None表示空指针。 点击查看代码 class ListNode: def __init__(self, val, next=None): self.val = val self.next 阅读全文