
力扣_模板-解题技巧-思路
文章平均质量分 61
安娜和她的笔记本
攀一座山,追一个梦
展开
-
时间复杂度分析
算法复杂度主要从时间、空间两个角度评价:时间:假设运行时间固定,统计算法运行的「计算操作的数量」,以代表算法运行所需时间;空间:统计在最差情况下,算法运行所需使用的「最大空间」常见种类根据从小到大排列,常见算法 时间 复杂度主要有:O(1) < O(logN) < O(N) < O(NlogN) < O(N2) < O(2N) < O(N!)O(1):1)运行次数与N大小呈常数关系:int algorithm(int N) { int a =原创 2022-04-26 09:11:23 · 1581 阅读 · 0 评论 -
滑动窗口 [01]
先给出滑动窗口算法框架:/*滑动窗口算法框架*/private static void minWindow(String s,String t){ //滑动窗口左右侧位置指针 int left = 0,right = 0; while (right < s.length()){ //滑动窗口右边增加 right ++; if(滑动窗口满足目标){ //对窗口内元素操作 } //滑动窗口左边缩小 while(滑动窗口缩小条件){ // left原创 2022-03-29 18:13:36 · 609 阅读 · 0 评论 -
BFS和DFS
深度优先遍历(简称 DFS )与广度优先遍历(简称 BFS )是图论中两种非常重要的算法。DFS算法:思想:一直往深处走,直到找到解或者走不下去为止。void dfs(...) { // 结束递归的条件 if (...) { ... // 把“当前结果” 加入 “结果集容器” 中 return; } // 继续递归,里面可能有回溯,也可能没有 if (...) { ... // 在容器中保存当前数据原创 2022-03-28 16:40:41 · 678 阅读 · 0 评论 -
二分查找[01]
35.搜索插入位置给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。示例 1:输入: nums = [1,3,5,6], target = 5输出: 2示例2:输入: nums = [1,3,5,6], target = 2输出: 1示例 3:输入: nums = [1,3,5,6], target = 7输出: 4提示:1 <= nums.l原创 2022-03-24 19:47:43 · 345 阅读 · 0 评论 -
链表[01]
链表基本概念:什么是链表,链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思)。链接的入口节点称为链表的头结点也就是head。手写链表(C/C++的定义链表节点方式):// 单链表struct ListNode { int val; // 节点上存储的元素 ListNode *next; // 指向下一个节点的指针 ListNode(int x) : val(原创 2022-03-24 09:04:59 · 1612 阅读 · 0 评论 -
二叉树[1]
在二叉树上进行 DFS遍历和 BFS遍历的代码比较DFS遍历使用递归:void dfs(TreeNode root) { if (root == null) { return; } dfs(root.left); dfs(root.right);}BFS 遍历使用队列数据结构:void bfs(TreeNode root) { Queue<TreeNode> queue = new ArrayDeque<>();原创 2022-03-20 15:15:57 · 598 阅读 · 0 评论