算法与数据结构
页页读
这个作者很懒,什么都没留下…
展开
-
寒武纪算法开发岗位二面手撕代码题目详细记录
寒武纪算法开发岗位二面手撕代码题目记录题目:给定一个数组,求能组成的和中,最小不可能的和。例如:[1,2,3,5],最小不可能的和为12。解答:就是一个二维动态规划,下面的答案是我面试完下来自己又重新做的,当时没做出来。主要就是一个二维dp table,然后dp[i][j]表示数组中前i个数,组成和为j是否可能出现。填表规则:data为所给数组。dp[i][j] 有三个来源决定:上一行当前列的值;上一行从当前列往前推data[i],例如,这里第二行data[i]=2;则就是是看dp[原创 2020-11-14 20:10:21 · 582 阅读 · 0 评论 -
风电场风机发电调度问题( 远景笔试题2020-09-21)
远景笔试题根据记忆描述:某风机场每台风机的发电量和距离升压站的距离各不相同,如风机1,距离为30, 发电量为20;风机2,距离为20, 发电量为18;风机3,距离为35, 发电量为25;风机4,距离为40, 发电量为30;求在所有风机总距离一定的情况下(例如距离<=100),最大发电量。输入:第一行:每台风机距离。第二行:每台风机发电量。第三行:总距离k。示例:输入:30 20 35 4020 18 25 3050输出:38题解:可以看成一个01背包问题,原创 2020-09-21 16:45:56 · 662 阅读 · 0 评论 -
LRU 缓存结构 (c++ 哈希双链表实现)
LRU 缓存结构link题目描述:设计LRU缓存结构,该结构在构造时确定大小,假设大小为K,并有如下两个功能set(key, value):将记录(key, value)插入该结构get(key):返回key对应的value值[要求]set和get方法的时间复杂度为O(1)某个key的set或get操作一旦发生,认为这个key的记录成了最常使用的。当缓存的大小超过K时,移除最不经常使用的记录,即set或get最久远的。若opt=1,接下来两个整数x, y,表示set(x, y)原创 2020-09-10 21:27:14 · 843 阅读 · 0 评论 -
最小m子段和系列题目总结
1. leetcode 410. 分割数组的最大值这个题目是最小M子段和本尊!也是最大子段和的升级版,由于最大字段和较简单在这里就不写了link题目:给定一个非负整数数组和一个整数 m,你需要将这个数组分成 m 个非空的连续子数组。设计一个算法使得这 m 个子数组各自和的最大值最小。注意:数组长度 n 满足以下条件:1 ≤ n ≤ 10001 ≤ m ≤ min(50, n)示例:输入:nums = [7,2,5,10,8]m = 2输出:18解释:一共有四种方法将nu原创 2020-09-03 00:08:11 · 1152 阅读 · 0 评论 -
最大堆(创建、删除、插入和堆排序)图文详解
原文地址我有一个不成熟的建议:老老实实花2个小时把这篇文章仔细看完,关于堆的各种操作一目了然了。关于最大堆什么是最大堆和最小堆?最大(小)堆是指在树中,存在一个结点而且该结点有儿子结点,该结点的data域值都不小于(大于)其儿子结点的data域值,并且它是一个完全二叉树(不是满二叉树)。注意区分选择树,因为选择树(selection tree)概念和最小堆有些类似,他们都有一个特点是“树中的根结点都表示树中的最小元素结点”。同理最大堆的根结点是树中元素最大的。那么来看具体的看一下它长什么样?(最小转载 2020-08-21 10:33:03 · 23011 阅读 · 1 评论