数据结构与算法
dadadadak
这个作者很懒,什么都没留下…
展开
-
高效的立体停车场数学思路
程序员的算法趣题——高效的立体停车场最近,一些公寓等建筑也都配备了立体停车场。立体停车场可以充分利用窄小的土地,通过上下左右移动来停车、出库,从而尽可能多地停车。现在有一个立体停车场,车出库时是把车往没有车的位置移动,从而把某台车移动到出库位置。假设要把左上角的车移动到右下角,试找出路径最短时的操作步数。举个例子,在 3×2 的停车场用如 图 13 所示的方式移动时,需要移动 13 步。图 13 车从左上角移动到右下角的示例 1(13 步)不过,如果用如 图 14 所示的移动方法,则只需要移动 9原创 2020-12-26 14:21:24 · 605 阅读 · 0 评论 -
树形动态规划记录
题目[834. 树中距离之和]——HARD834. 树中距离之和给定一个无向、连通的树。树中有 N 个标记为 0…N-1 的节点以及 N-1 条边 。第 i 条边连接节点 edges[i][0] 和 edges[i][1] 。返回一个表示节点 i 与其他所有节点距离之和的列表 ans。示例 1:输入: N = 6, edges = [[0,1],[0,2],[2,3],[2,4],[2,5]]输出: [8,12,6,10,10,10]解释:如下为给定的树的示意图: 0 / \1原创 2020-10-06 22:45:07 · 99 阅读 · 0 评论 -
动态规划--矩阵 类型题目整合
最大正方形(lc221)在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。示例:输入:1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 0输出: 4来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/maximal-square著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。动态规划迭代式如果该位置的值是 00,则 dp(i, j) = 0,因为当前位置原创 2020-05-10 00:33:08 · 341 阅读 · 0 评论 -
华为4-22笔试——子序列最小和的最大值排列
一个序列 m个数,分成k个子序列,S[i]表示第i个子序列的和。要使S[i]的最小值尽可能大;S[i]的最小值相同时,按照S[0]最小、S[1]最小排列,输出第一个样例1输入:6 31 2 3 2 5 4输出:1 2 3 / 2 5 / 4样例2输入:9 3100 200 300 400 500 600 700 800 900输出:100 200 300 400 500 / 600...原创 2020-04-22 23:47:25 · 971 阅读 · 0 评论 -
图论学习记录2——路、圈、连通
图论学习(哈工大 HIT)B站地址路、圈、连通通道:图G的顶点和边的交错序列:v0x1v1x2v2...xnvnv_0x_1v_1x_2v_2...x_nv_nv0x1v1x2v2...xnvn , 记作v0vnv_0 v_nv0vn通道,长为边数v0v0v_0 v_0v0v0通道为闭通道G的一个(闭)通道如果没有重复的边,成为一条(闭)迹G的一个(闭)通道如果...原创 2020-04-21 23:37:02 · 3537 阅读 · 0 评论 -
图论学习记录1
图论学习(哈工大 HIT)B站地址记录12.5 度定义图G=(V,E),V为顶点的集合,E为边的集合。任意v属于V,与v关联的边的条数成为v的度,记作 deg v。推论1条边对度的贡献为2,则图的总度数为边数的两倍sum(deg(v)) = 2q握过奇数次手的人有偶数个。(把人分为两类,握过奇数次手和握过偶数次手,两类人加起来有偶数个,握过偶数次手的人加起来有偶数个。)...原创 2020-04-21 22:34:07 · 324 阅读 · 0 评论 -
leetcode题目——边做边记录
20200602——求1+2+…+n面试题64. 求1+2+…+n求 1+2+…+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。解法1:用&&或||的短路特性实现递归将判断是否为递归的出口看作 A && B 表达式中的 A 部分,递归的主体函数看作 B 部分。如果不是递归出口,则返回 \textit{True}True,并继续执行表达式 B 的部分,否则递归结束。当然,你也可以用逻辑运算符原创 2020-06-09 00:29:44 · 150 阅读 · 0 评论 -
数据结构与算法(一)——20200902
尚硅谷—java数据结构与算法—韩顺平内容介绍几个经典的面试题字符串匹配问题要求两个字符串: str1=“abcabdabe”,str2=“abd”判断str1中是否包含str2,如果存在,就返回第一次出现的位置,如果没有返回-1.用最快的速度来完成匹配暴力匹配:简单、效率低KMP算法(部分匹配表)汉诺塔要求:将A塔的所有圆盘移动到C塔上小圆盘不能放在大圆盘的下面每次只能移动一个圆盘分治问题八皇后问题任意两个皇后不能处于同一行同一列或同一原创 2020-10-03 14:10:18 · 173 阅读 · 0 评论 -
数据结构与算法(二)
文章目录查找二分查找插值查找斐波那契(黄金分割)查找哈希表树顺序存储二叉树线索二叉树赫夫曼编码查找二分查找mid=low+high2=low+high−low2mid=\frac{low+high}{2}=low+\frac{high-low}{2}mid=2low+high=low+2high−low插值查找mid=low+key−a[low]a[high]−a[low](high−low)mid=low+\frac{key-a[low]}{a[high]-a[low]}(high-l原创 2020-09-16 01:20:23 · 183 阅读 · 0 评论 -
算法题——01背包——200915
文章目录题目1. 简单的烦恼2. 货币系统3. 音量调节总结解答1. 简单的烦恼2. 货币系统3. 音量调节题目1. 简单的烦恼链接:https://ac.nowcoder.com/acm/problem/25184来源:牛客网题目描述 网易云音乐推出了定时关闭播放的功能,假设到了定时关闭播放的时间,当前这首歌还没有播放完,那就把它播放完关闭;如果到了定时关闭的时间,当前歌恰好播放完,那就立即关闭。xrc在知道网易云这个算法后,想知道如果自己定时 t 时间后关闭播放,那最多能听多长时间的歌原创 2020-09-15 01:02:40 · 256 阅读 · 0 评论 -
LC207—— 课程表——图的遍历/拓扑排序
207. 课程表文章目录总结DFS递归非递归(Stack)BFS递归(depth)非递归(Queue)总结DFS 走迷宫式,所以要用状态来标记是否走过这个点:0 未搜索 1 搜索中 2 已完成BFS(拓扑排序) 将入度为0的点依次入queue取出一个之后,将这个点去掉,指向的下面节点入度-1,依次加入queue取出……取出……两者方法,前面都要对prerequisites预处理,得到每个节点对应的list(记录前驱结点s 或 后继节点s)dfs: 记载前驱节点还是后继都可以原创 2020-08-05 00:07:10 · 180 阅读 · 0 评论 -
排序算法总结
主要参考Java 八大排序算法文章目录排序算法总结插入排序直接插入排序二分插入排序希尔排序选择排序简单选择排序二元选择排序堆排序交换排序冒泡排序(略)快速排序快速排序+插入排序归并排序基数(桶)排序排序算法总结排序方法时间复杂度(平均)时间复杂度(最好)时间复杂度(最坏)空间复杂度稳定性复杂性直接插入排序O(n2)O(n^2)O(n2)O(n2)O(n^2)O(n2)O(n)O(n)O(n)O(1)O(1)O(1)稳定简单希尔排序O(nlog2n)O(原创 2020-08-04 00:34:49 · 107 阅读 · 0 评论 -
20200712——合并k个有序链表
合并k个有序链表联想合并2个有序链表和8赛道跑马思路1维护一个大小为k的数字,存储链表头。对链表头元素进行冒泡,得到最小的元素,取出,放到结果链表resList将最小元素的后一个节点放入数组,重新冒泡一次,得到新的最小元素,放入resList。重复第3步,若有链表排完了,置为null,放到数组末尾(可以维护一个数组的有效大小arrRealSize)复杂度分析时间复杂度每次冒泡k,取出一个元素。一共n个元素,那么应该是O(nk)空间复杂度不考虑原始链表和结果链表,维护一个原创 2020-07-12 09:57:53 · 143 阅读 · 0 评论