LeetCode刷题
文章平均质量分 61
主要总结了在刷力扣时遇到的各种解决方案以及解题思想。
God Void
努力努力!!!
展开
-
二叉树的遍历
一、什么是二叉树?树 是一种经常用到的数据结构,用来模拟具有树状结构性质的数据集合。树里的每一个节点有一个值和一个包含所有子节点的列表。从图的观点来看,树也可视为一个拥有N 个节点和N-1 条边的一个有向无环图。二叉树是一种更为典型的树状结构。如它名字所描述的那样,二叉树是每个节点最多有两个子树的树结构,通常子树被称作“左子树”和“右子树”。二、二叉树的三种遍历(1)前序遍历前序遍历首先访问根节点,然后遍历左子树,最后遍历右子树。递归写法:class Solution { // 先序遍历原创 2021-08-29 16:44:05 · 86 阅读 · 0 评论 -
二分查找及其细节
二分查找一、定义:二分查找也称折半查找(Binary Search),是一种在有序数组中查找某一特定元素的搜索算法。我们可以从定义可知,运用二分搜索的前提是数组必须是有序的,这里需要注意的是,我们的输入不一定是数组,也可以是数组中某一区间的起始位置和终止位置二、思想:(1)确定数组nums的大小,定义 left = 0, rigth = nums.length - 1 , mid = (left + right)/2,(2)当 left <= right 时循环执行下面步骤当 nums[mid原创 2021-08-26 20:09:29 · 142 阅读 · 0 评论 -
滑动窗口思想
滑动窗口滑动窗口的本质还是双指针的应用一 . 滑动窗口的作用滑动窗口算法可以用以解决数组/字符串的子元素问题,它可以将嵌套的循环问题,转换为单循环问题,降低时间复杂度。二 . 滑动窗口的用法定义左右指针,右指针依次遍历数组,此时的下标即右指针,向后依次挪动 ; 当左指针和右指针区间内的元素不符合条件时,我们便会移动左指针,直至条件符合,继续挪动右指针。其间统计每一次的结果。三. 应用举例eg-1. 长度最小的子数组 (leecode 209题, 难度 中等 )public int minS原创 2021-08-22 23:58:21 · 146 阅读 · 0 评论 -
双指针的应用
双指针的应用一. 双指针可分为:快慢指针,对撞指针。二. 双指针技巧主要应用在解决 数组,链表 以及 字符串 问题三. 双指针的应用场景:(1)快慢指针:主要运用于处理链表内部环路的问题,再就是可以解决数组内是否有重复项的问题。eg-1. 删除有序数组中的重复项(leetcode 第26题 - 难度 easy)class Solution { public int removeDuplicates(int[] nums) { int len = nums.length;原创 2021-08-22 23:03:56 · 631 阅读 · 0 评论