数据结构与算法
文章平均质量分 55
残夜__
记录一下刷题碰到的一些题目。
展开
-
[动态规划] 01背包
如果第 i 行的 v[ i ] 比第 i-1 个大,那么前面会有一部分没有更新,但是这一段的 dp 的值在之前的代码 j < v[ i ] 时: dp[i][j] = dp[i-1][j] 即当前代码还是上一行的,也就是可以不用更新。取 dp[ i-1 ][ j-v[i] ] + w[ i ] //前 i-1 个物品大小为j-v[ i ]的最大收益+当前物品收益。我们每一次更新第 i 行 j 个时,只与第 i - 1 行的 第 j 个或者第 j-v[i]个有关。原创 2024-05-09 22:19:28 · 514 阅读 · 1 评论 -
快速排序与快速选择
快速排序与快速选择平均时间复杂度为:O(nlgn)平均空间复杂度为:O(1)原理:每次选择一个数(通常为 第一个数 或 最后一个数 或 最中间的数),每一个数与该数对比,将比该数小的移动到左边,比该数大的移动到右边。然后再从 左半部分 和 右半部分 分别执行此操作,以此递归。快速选择平均时间复杂度为:O(n)给定一个长度为 n 的整数数列,以及一个整数 k,请用快速选择算法求出数列从小到大排序后的第 k 个数。原创 2022-05-12 22:18:16 · 183 阅读 · 0 评论 -
LeetCode 22. 括号生成
22. 括号生成 (dfs,剪枝,回溯,StringBuilder)数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例:输入1: n = 3输出1: ["((()))","(()())","(())()","()(())","()()()"]输入2: n = 1输出2: ["()"]范围:1 <= n <= 8对于 n ,每一个结果字符串的长度都...原创 2022-05-10 22:19:24 · 281 阅读 · 0 评论 -
LeetCode 21. 合并两个有序链表 && 19. 删除链表的倒数第 N 个结点 双指针
public class ListNode{ int val; ListNode next; ListNode() {} ListNode(int val) { this.val = val; } ListNode(int val, ListNode next) { this.val = val; this.next = next; }}给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头节点例子: 1 -> 2 ->...原创 2022-05-09 14:02:34 · 433 阅读 · 0 评论 -
第十二届蓝桥杯 #G 123
第十二届蓝桥杯 2021年国赛真题 (Java 大学C组)问题描述 小蓝发现了一个有趣的数列,这个数列的前几项如下: 1 , 1 , 2 , 1 , 2 , 3 , 1 , 2 , 3 , 4 , . . . 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, ...1,1,2,1,2,3,1,2,3,4,... 小蓝发现,这个数列前 1 11 项是整数 1 11,接下来 2 22 项是整数 1 11 至 2 22,接下来 3 33 项是整数 1 11 至 3 33,接下来 4 4原创 2022-05-07 17:45:45 · 922 阅读 · 0 评论 -
LeetCode 1004. 最大连续1的个数 III
给定一个二进制数组 nums 和一个整数 k,如果可以翻转最多 k 个 0 ,则返回 数组中连续 1 的最大个数 。示例:输入: nums = {1,1,1,0,0,0,1,1,1,1,0}, K = 2输出: 6详解: {1,1,1,0,0,0,1,1,1,1,0} {1,1,1,0,0,2,2,2,2,2,2} 2表示最大长度的情况此题需要找 最多 可以翻转 k 个 0 为 1 ,数组中连续 1 的最大个数。也就是找到 一原创 2022-05-06 22:03:07 · 558 阅读 · 0 评论 -
LeetCode 130. 被围绕的区域
给你一个 m x n 的矩阵 board ,由若干字符 'X' 和 'O' ,找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充。示例:输入: X X X X X O O X X X O X X O X X输出: X X X X X原创 2022-05-05 09:59:44 · 80 阅读 · 0 评论