算法 随想录 柠檬水 队列
[代码随想录] 第一天
704.二分查找 [https://leetcode.cn/problems/binary-search/description/] 思路: 二分查找适用于在有序数组中查找目标值,左边边界为left,右边边界为right,每次使用middle=(right+left)/2,将原数组划分为[left, ......
day13 代码随想录算法训练营 递归遍历
题目: 144.二叉树的前序遍历 145.二叉树的后序遍历 94.二叉树的中序遍历 我的感悟: 用helper内部函数写更好 理解难点: 代码难点: 代码示例: 前序 # Definition for a binary tree node. # class TreeNode: # def __ini ......
栈和队列
栈的变种,迎面增长的栈和底部相连的栈 错误 只是rear和front指针在移动 如果是虚指针 转进制,1234除以8的余数为2、2、3、2。再倒序输出,选B 虚指针。25-29有5个数,11-5=6.最后一个数据的下标为5,rear只是对队尾元素的后一个位置,所以是6. 入栈顺序是123456,出栈 ......
【学习笔记】KMP 相关算法
KMP 单模式串匹配,比较平凡所以不说了,比较有借鉴意义的每次拓展一位和 \(nxt\) 数组能极大减少不合法的匹配,时间复杂度 \(O(|s|+|t|)\)。 引出一个定义,记满足 \(s[1,i]=s[|s|-i+1,|s|]\) 的前缀为字符串 \(s\) 的 \(\mathrm{border ......
【算法】【线性表】【链表】反转链表II
1 题目 给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。 示例 1: 输入:head = [1,2,3,4,5], left = 2, right = 4 输出 ......
读算法霸权笔记13_读后总结与感想兼导读
1. 基本信息 算法霸权:数学杀伤性武器的威胁 [美] 凯西·奥尼尔(Cathy 著 中信出版社,2018年9月出版 1.1. 读薄率 书籍总字数220千字,笔记总字数32359字。 读薄率32359÷220000≈14.71% 1.2. 读厚方向 算法的力量:人类如何共同生存? 极简算法史:从数学 ......
【算法】【线性表】【链表】反转链表
1 题目 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2: 示例 3: 输入:head = [] 输出:[] 提示: 链表中节点的数目范围是 [0, 5000] -5000 <= No ......
(坚持每天都写算法)算法复习与学习part1基础算法1-5
今天是写题,数的的三次方根。 使用二分法,浮点数不能位运算直接/2即可。 //这道题很难想到二分,二分查找是查找,就是找哪个地方有目标数 //一般是用在区间上的, //总结:二分要求是有查找条件且是查找,符合这两个条件就可以考虑 //不过这里可以把从0到n的浮点数当成一个区间,看数值范围的话,n的话 ......
刷题 链表 优先队列
2024.1.9 cf Hello 2024 1919D 解题思路 这题理解一下就是,找出数组中每一个比左数或右数大1的数,从大到小(体现优先队列)删除(体现链表),对访问过的数打个标记(vis),最后数组里的数要么被打过标记,要么是0. 代码 #include<bits/stdc++.h> usi ......
(坚持每天都写算法)算法基础复习part1基础算法1-4——二分
二分使用的前提是有序性的条件如果要找以下情况: 1.找大于等于数的第一个位置 2.找小于等于数的第一个位置 二分使用的前提是无序性的条件下如果要找以下情况: 1.找最大值 2.找最小值 二分法一般有边界问题,如果是有序性的条件下的话只要记住一句话:有加必有减。 这里是示例代码: int mid = ......
代码随想录 day13 滑动窗口最大值 前 K 个高频元素
滑动窗口最大值 这题第一次见 比较难找到思路 滑动窗口的移动比较类似于队列的行为 但是我们需要找到其中的最大值 在线性时间复杂度下 只能维护这个队列保持单调性 但是我们没有这样的一个可以在移动中保持单调的数据结构 只能自己手动创建 我们利用deque进行队列的创建 这个队列有三个基本函数 pop 用 ......
文心一言 VS 讯飞星火 VS chatgpt (175)-- 算法导论13.3 4题
四、用go语言,Teach 教授担心 RB-INSERT-FIXUP可能将 T.nil.color 设为 RED,这时,当 z 为根时第1行的测试就不会让循环终止。通过讨论 RB-INSERT-FIXUP永远不会将 T.nil.color 设置为 RED,来说明这位教授的担心是没有必要的。 文心一言 ......
MCM_算法篇
from pixiv Cellular Automata 参考文章: 元胞自动机的实现与应用 这篇文章将CA的实现给出,具体实现细节可以看: Python 实现基于元胞自动机的生命游戏 澳洲变燠洲,考拉成烤拉!澳大利亚山火为什么难以控制? ......
day13 代码随想录算法训练营 347. 前 K 个高频元素 【待梳理】
题目:347. 前 K 个高频元素 我的感悟: 我用hash再排序。 卡尔用的小顶堆。 `heapq`是Python中的一个模块,它提供了堆队列(也称优先队列或者堆)的算法实现。在计算机科学中,堆是一种特殊的完全二叉树数据结构,其中每个父节点的值都小于或等于其子节点的值(在最小堆中)或者父节点的值都 ......
day13 代码随想录算法训练营 239. 滑动窗口最大值
题目:239. 滑动窗口最大值 我的感悟: 来难度了,有点意思, 理解难点: 需要实现自定义队列, 看了国外的解题思路和其他的回答,感觉还是卡尔的思路,更有意思。 实现队列: pop只弹出左边边界且左边界为最大值的时候 push 要维护队列里的大到小的单调性。把队尾小的都卷走 front查询最大值 ......
算法期末复习笔记
分治 基本概念 基本思想 将原始问题分解为若干子问题 逐个解决各个子问题 得到原始问题的解 情况分类 原始问题的解在分解出的子问题中 原始问题的解需要各个子问题的解再经过综合处理得到 如果分解出的子问题和原始问题类型相同,就可以用递归的方法做了 算法示例 查找最大值最小值 O(logn) 二分搜索 ......
KMP 算法
Question: Given two strings needle and haystack, return the index of the first occurrence of needle in haystack, or -1 if needle is not part of haysta ......
阻塞队列(BlockingQueue)
阻塞队列(BlockingQueue) 实现了:BlockingQueue JDK提供的七个阻塞队列 一、特点 1、JDK提供的七个阻塞队列简介 ①. ArrayBlockingQueue 有界 阻塞队列——必须指定大小——数组 ②. LinkedBlockingQueue 有界 阻塞队列——默认大 ......
计算器算法
目录思路最简单的计算器(好像也不简单,因为有*/)224772 困难计算器 可以通解224 227 和上面的题 先把力扣上5道计算器的题目干了,主要使用双栈法 思路 用一个栈ops存操作,用一个栈nums存数字 然后从前往后做,对遍历到的字符做分情况讨论: 空格 : 跳过 ( : 直接加入 ops ......
常用容器:动态数组array、列表list、队列 queue、map或字典、 集合、栈等等
一般语言都会提供一些逻辑容器的实现,各个语言的实现方式不同;底层的数学算法应该差不多; # 动态数组, 这个没啥可说的,就是一个数组,满了时候,再创建一个数组,把之前的数组里的数据移过来,销毁之前数组; ......
mysql底层join算法
暴力 Nested-Loop Join 走索引的 index-Nested-Loop Join 缓冲块的 blocked-Nested-Loop Join mysql join 底层实现_mysql join实现算法-CSDN博客 走index loop join ,说明如果联表走主键,就算条件不走 ......
【算法】【线性表】【链表】链表求和
1 题目 给定两个用链表表示的整数,每个节点包含一个数位。 这些数位是反向存放的,也就是个位排在链表首部。 编写函数对这两个整数求和,并用链表形式返回结果。 示例: 输入:(7 -> 1 -> 6) + (5 -> 9 -> 2),即617 + 295 输出:2 -> 1 -> 9,即912 进阶: ......
代码随想录 day14 二叉树的递归遍历 迭代遍历(栈) 统一遍历(栈)
二叉树的节点的孩子数量称之为度 所有节点度为0或2的二叉树是满二叉树 完全二叉树是所有非叶节点都是度为2的节点 叶子都尽可能的靠左 前序遍历:中左右 中序遍历:左中右 后续遍历:左右中 这里左右中指的是当前节点的遍历顺序 中就是先遍历当前节点 再遍历子树 前序遍历递归代码: 中序遍历递归代码: 后序 ......
代码随想录算法训练营第二十七天 | 39. 组合总和,40.组合总和II,131.分割回文串
一、39. 组合总和 题目链接: LeetCode 39. 组合总和 学习前: 思路: 无 学习后: 思路: 需要额外定义的成员变量: private List<List<Integer>> res; private List<Integer> list; 调用函数: List<List<Integ ......
ClickHouse的JOIN算法选择逻辑以及auto选项
Setting配置join_algorithm用于指定JOIN算法,它可以设置为多个值,例如join_algorithm='direct,hash,partial_merge'。在选择最终JOIN算法的时候是根据setting配置join_algorithm, 以及JOIN操作的Strictness... ......
【算法】【线性表】【数组】只出现一次的数字 II
1 题目 给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法且使用常数级空间来解决此问题。 示例 1: 输入:nums = [2,2,3,2] 输出:3 示例 2: 输入:nums = ......
(坚持每天都写算法)算法基础复习part1基础算法1-3
发现了一个不太好的习惯,我写东西不喜欢Tab一下,导致行与行之间有点难区分。 题目: 思路:这道题其实考的就是归并,2可以和3比,也可以和6比,也就是说2是可以被使用多次的。之所以使用归并,是因为单个的2以及单个的3也就是单个的数字可以看成是一个数组(关于这个想法,集合也是通用的),那么就要给数组进 ......
数据结构-单调队列
单调队列使用范围: 滑动区间的极值查询与维护 单调队列的原理: 单调队列需要持续维护队列的单调性,我们假设该队列为单增队列,那么最小值可以在队尾取得。 如图是一个刚建立的队列 接下来思考插入一个元素怎么处理:我们从队首开始看,如果队首的元素比目前需要插入的值大,那么原先队列的那个值在滑动过程中就不会 ......
编程随想曲周刊(第62期)
这里记录每周的所见所闻,周日发布。点击阅读原文可以直接访问文章链接。 工具 自动清除网站加在 URL 后面的冗余内容:ClearURLs 文章 去做吧,停止空谈 卸磨杀罗振宇 新巨富是如何诞生的 生活 泼天的富贵终于轮到哈尔滨了 孙燕姿妹妹发文:无法忍受姐姐的所作所为,决定断绝关系! 播客 东方甄选 ......