
算法与数据结构
文章平均质量分 64
数据结构是组织和存储数据的方式,它们影响了数据的操作和处理效率。算法是解决特定问题或执行特定任务的一系列步骤。
Dddddduo_
江苏省高中数学竞赛三等奖 阿里云认证专家博主 字节跳动青训营后端优秀奖
展开
-
牛客春招刷题训练营 算法 Java 3月28日 不要三句号的歪 尼科彻斯定理 隐匿社交网络
第一次切割 我们将字符串切割成左右两部分 切割字符串 ",...,"两个二进制的表示在每一位上不能同时为 1 的两个数按位与运算是 0。合并后 看一下最大的子集的元素个数 就得出了我们需要的答案。然后 后面那个数组的第一部分 减去前面数组的最后一部分。按位与操作运算得到的结果是 0 的两个数不能合并。第二次切割 我们将左边的字符串按 "," 切割。第三次切割 我们将右边的字符串按 "," 切割。只要是有某一位上的数都是 1 就进行合并。所以我们找到了每一位的数。这是我们写的第一个方法。原创 2025-04-02 19:04:05 · 235 阅读 · 0 评论 -
牛客春招刷题训练营 算法 Java 3月27日 杨辉三角的变形 计算日期到天数转换 而后单调
用 get 方法获取时间 传入的属性是字符串(成员变量)我这边直接调用的Calendar 类。首先获得 Calendar 单例对象。然后用 set 方法挂载属性值。其次有两个相邻元素一样的不行。我们打个表就不难发现规律。首先严格递增的序列不行。原创 2025-04-02 19:03:32 · 191 阅读 · 0 评论 -
牛客春招刷题训练营 3月25日 Java 查找两个字符串a,b中的最长公共子串 构造C的歪
牛客春招刷题训练营# +子串必须是连续的那么 dp[i][j] 的状态只能由 dp[i-1][j-1] 得到可以跟力扣上的最长公共子序列类比差不多可以做一下力扣 1143 子串必须是连续的那么 dp[i][j] 的状态只能由 dp[i-1][j-1] 得到可以跟力扣上的最长公共子序列类比差不多可以做一下力扣 1143 子串必须是连续的那么 dp[i][j] 的状态只能由 dp[i-1][j-1] 得到可以跟力扣上的最长公共子序列类比差不多可以做一下力扣 114原创 2025-03-25 14:14:27 · 209 阅读 · 0 评论 -
算法入门 经典DP 力扣1143 最长公共子序列 拓展最长子串 Java
它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。那么 dp[i][j] 的状态只能由 dp[i-1][j-1] 得到。那么 dp[i][j] 的状态只能由 dp[i-1][j-1] 得到。否则则顺延 dp[i-1][j] 和 dp[i][j-1]在字符串中可以不是连续的。原创 2025-03-25 13:48:34 · 290 阅读 · 0 评论 -
牛客春招刷题训练营 3月24日 Java 统计每个月兔子的总数 高精度整数加法 喜欢切数组的红
牛客春招刷题训练营# +很经典的 dp爬楼梯递推写法 喜欢切数组的红可以存一下前缀和为 3 的集合再存一下后缀和为 3 的集合然后遍历看情况符合跑了 500ms原创 2025-03-25 12:20:23 · 246 阅读 · 0 评论 -
牛客周赛84 题解 Java ABCDE 仅供参考
如果要经过 2 轮得出答案 有 4*4=16 种组合 看一下这些组合有没有得出 0。如果要经过 1 轮得出答案 有 4 种组合 看一下这些组合有没有得出 0。因为数据量很小 我考虑的暴力了一点 直接枚举了每条边都是最长边的情况。最后得到的队列肯定是 01010101 101010... 类似的。首先我们知道的是 两个数如果相同 异或运算得到的数为 0。那么如果现在集合里面有两个一样的数 那么只要再操作一次。如果队列尾部的元素跟要添加的元素不一样。如果队列尾部的元素跟要添加的元素一样。原创 2025-03-23 21:22:28 · 408 阅读 · 0 评论 -
Java 双端队列实战 实现滑动窗口 用LinkedList的基类双端队列Deque实现 洛谷[P1886]
在 Java 中,Deque 是一个双端队列接口,它继承自 Queue 接口,支持在队列的两端进行元素的插入、删除和访问操作。LinkedList 是 Deque 接口的一个实现类,下面介绍 Deque<Integer> deque = new LinkedList<>(); 常见的操作。原创 2025-03-22 21:54:34 · 505 阅读 · 0 评论 -
牛客周赛85 题解 Java ABCDEFG
如果 l 大于紫色末尾 则可以染成紫色 更新紫色末尾为第二段结束的 r。如果第三段的起始 l 大于红色末尾 更新红色末尾为第二段结束的 r。10101 可以 10101 -> 10001 -> 11111。一部分染紫色 一部分染红色 等效于 一部分染红色 一部分染紫色。1010 可以 1010 -> 1110 -> 1111。第一段为红色 那么红色的末尾为 arr[0][2]操作 1001 等效于操作 101。101 可以 101 -> 111。如果第二段的起始 l 小于红色末尾。原创 2025-03-16 21:45:09 · 505 阅读 · 0 评论 -
牛客春招刷题训练营 3月14日 Java 字符个数统计 删除字符串中出现次数最少的字符 四则运算
牛客春招刷题训练营 3月14日 Java 字符个数统计 删除字符串中出现次数最少的字符 四则运算原创 2025-03-16 16:07:12 · 120 阅读 · 0 评论 -
牛客春招刷题训练营 3月13日 Java 提取不重复的整数 句子逆序 迷宫问题
牛客春招刷题训练营 3月13日 Java 提取不重复的整数 句子逆序 迷宫问题原创 2025-03-16 16:06:19 · 445 阅读 · 0 评论 -
牛客春招刷题训练营 3月12日 Java 进制转换 合并表记录 称砝码
牛客春招刷题训练营 3月12日 Java 进制转换 合并表记录 称砝码原创 2025-03-16 16:05:34 · 226 阅读 · 0 评论 -
牛客周赛84 题解 Java ABCDEFG AK实录
【代码】牛客周赛84 题解 Java ABCDEFG AK实录。原创 2025-03-16 16:04:09 · 640 阅读 · 0 评论 -
Java算法 八股 Javase Set集合类 编译看左边 运行看右边 详解TreeSet和HashSet
TreeSet是一个有序的集合,基于红黑树实现,支持高效的元素查找和排序相关的操作。它提供了许多与元素顺序和范围查询相关的方法,如higher()lower()ceiling()floor()等。HashSet是一个无序的集合,基于哈希表实现,适用于需要快速查找、添加、删除操作的场景。它提供了一些与元素存在性和集合操作相关的方法,如contains()add()remove()clear()等。根据你的需求选择合适的集合类,可以在保证性能的同时满足功能需求。编译时看左边。原创 2025-01-17 22:00:37 · 821 阅读 · 0 评论 -
Java算法 二叉树入门 力扣简单题相同的树 翻转二叉树 判断对称二叉树 递归求二叉树的层数
根节点左孩子节点右孩子节点。左孩子节点根节点右孩子节点。左孩子节点右孩子节点根节点。原创 2025-01-17 21:59:42 · 634 阅读 · 0 评论 -
双端队列实战 实现滑动窗口 用LinkedList的基类双端队列Deque实现 洛谷[P1886]
Deque 是一个接口LinkedList 是这个接口的实现类。集合 关系 介绍Deque 是一个接口LinkedList 是这个接口的实现类原创 2025-01-15 19:13:21 · 491 阅读 · 0 评论 -
Java 数据结构 队列之双端队列 常用方法 示例代码 及其实现
Java中的双端队列(Deque,Double Ended Queue)是一种队列,它允许在队列的两端插入和删除元素。与普通队列(FIFO)不同,双端队列的元素可以从队列的两端进行添加或删除。Java提供了Deque接口,它扩展了Queue接口,常见的实现类有ArrayDeque和LinkedList。原创 2025-01-15 19:11:57 · 413 阅读 · 0 评论 -
Java算法 数据结构 栈 单调栈实战 模版题 [洛谷-P5788]
【代码】Java算法 数据结构 栈 单调栈实战 模版题 [洛谷-P5788]原创 2025-01-15 18:37:26 · 511 阅读 · 0 评论 -
Java算法 数据结构基础 并查集 模版 [洛谷-P3367]
并查集(Union-Find)是一种数据结构,主要用于处理一些不交集的合并及查询问题,特别是在图论中用来解决连通性问题。查找(Find):判断某个元素属于哪个集合,返回该集合的代表元素(根)。合并(Union):将两个集合合并成一个集合。并查集通过路径压缩和按秩合并来优化效率,减少操作的时间复杂度。原创 2025-01-15 18:36:54 · 963 阅读 · 0 评论 -
Java算法 数据结构 栈 队列 优先队列 比较器
ComparatorComparatorJava 提供了多种方式来实现比较器Comparator使用内置的Comparator方法(如等)。定制比较器,使用等进行多重排序。使用自定义Comparator对象来排序集合,如等。通过灵活地使用这些比较器,你可以对各种类型的对象进行多样化的排序。4o。原创 2025-01-13 19:22:23 · 1189 阅读 · 0 评论 -
cf988(1)
cf988 div3 题解 by KDB。原创 2024-11-18 20:06:38 · 54996 阅读 · 0 评论 -
C++算法模板
【代码】C++算法模板。原创 2024-05-23 03:20:23 · 102794 阅读 · 3 评论 -
Java算法模板 数据流快读
【代码】Java算法模板。原创 2024-05-29 18:35:23 · 102778 阅读 · 1 评论 -
位运算入门及简单算法题的应用
从现代计算机中所有的数据二进制的形式存储在设备中。即 0、1 两种状态,计算机对二进制数据进行的运算(+、-、*、/)都是叫位运算,即将符号位共同参与运算的运算。将人类自然语言转化为机器语言来参与运算:现代计算机中的处理器通常会针对位运算提供专门的硬件支持,使得位运算可以在硬件层面上被高效执行。:位运算是对二进制位进行简单的逻辑操作,相比其他运算(如乘法、除法)而言,位运算的操作逻辑更为简单,因此执行速度通常更快。原创 2024-05-09 14:11:00 · 102909 阅读 · 0 评论 -
Java进制转换
Integer类中的静态方法parseInt可以将字符串转化成十进制数即是字符串转整形数 这时的形参是字符串而这个parsInt方法重载当传入两个形参的时候 第一形参依旧是字符串 第二个形参可以传入进制基数radix代表你想把什么进制的数转化成十进制数获得到的十进制数 可以再通过Integer类里面的静态方法to...转化为对应的进制返回值类型是字符串Integer.toOctalString()转化成八进制Integer.toBinaryString() 转化为二进制。原创 2024-03-17 09:03:36 · 95854 阅读 · 0 评论 -
二分查找Java版
二分查找法(Binary Search)是一种在有序数组中查找目标值的高效算法。它的基本思想是通过将目标值与数组中间元素进行比较,从而缩小查找范围,直到找到目标值或确定它不存在为止。二分查找的时间复杂度为O(log n)。这是因为在每一次比较中,算法将搜索范围减半,因此搜索范围每次都会缩小一半。这种对搜索范围的对数级别的减少导致了O(log n)的时间复杂度。即使在最坏情况下,即未找到目标值时,二分查找也只需要进行O(log n)次比较。原创 2024-04-04 21:34:42 · 103612 阅读 · 0 评论