编程算法题解
主要写一些算法题解,加深对算法的理解
1.01
这个作者很懒,什么都没留下…
展开
-
力扣题621. 任务调度器-------cpu调度轮转
题目:这道题可以看成电脑里面的cpu时间片轮转,也就是给你一堆任务,一个时间片能处理n个,问你最少需要多少个时间片?(这里计算秒数)思路:由于是求最少的秒数,那么我们肯定能想到先把任务数最多的先执行,这样才能得到最佳的答案,在这里我们就可以用优先队列去做,先把所有的任务数的个数放进队列中(在此之前先for循环记录下各类任务的个数),在根据题目中的n去执行队列中的数字的出队,这里要用一个vector记录出队后的任务数(出队后任该务类的个数还有就放进vector),然后再把vector里的元素重新放原创 2020-08-28 22:26:29 · 251 阅读 · 0 评论 -
poj 3278 简单BFS多状态搜索
简单总结为:思路:简单BFS将a放入队列中,如果队列不空,就取出队头,分析三种情况,如果没被访问过就将新的a放入队列,直到取出的队头等于b,返回查找的次数。也可以认为是一棵度为3的树,因为有三个操作,但是这个得剪枝,不然会超时也就是设置一个数组或者unordered_set,只要数组里面对应的值是true或者set容器里面存在,那么我们就不放进队列当中。如图://这是第一种写法,还有另外一种写法,两种写法原理是一样,//只不过代码不一样,个人推荐第二种写法# include <i.原创 2020-08-17 16:29:44 · 136 阅读 · 0 评论 -
POJ 2456 疯牛(二分+贪心)
题目链接,请点击!思路:这道题的话,其实就是贪心+二分,总的一句话,就是把距离二分后的x,然后拿x去遍历数组,看是否满足c个以上的牛,若满足,就true在此之前要先把牛栏的编号先排个序,为什么排序呢?排序的目的是为了验证二分后的距离是否满足c个牛的这个条件,如果满足这个距离是OK的# include <iostream># include <algorithm>using namespace std;int n,c;const int N = 1e5+10;in..原创 2020-08-16 23:57:26 · 939 阅读 · 0 评论 -
力扣题目-----打家劫舍三道
例题一:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。这道题直接简化为:给你一组数字,让你选择若干个数字,前提条件是你选的数字不能是相邻的。思路:采用动态规划来做,对于第 k (k>2) 间房屋,有两个选项:偷窃第 k 间房屋,那么就不能偷窃第原创 2020-08-05 22:56:34 · 564 阅读 · 0 评论 -
位运算题-----力扣上的题
前言:这些题主要运用异或的性质,所以也就讲这个东东:异或的性质两个数字异或的结果a^b是将 a 和 b 的二进制每一位进行运算,得出的数字。 运算的逻辑是如果同一位的数字相同则为 0,不同则为 1异或的规律任何数和本身异或则为 0任何数和 0 异或是 本身异或满足交换律。 即 a ^ b ^ c ,等价于 a ^ c ^ b例题:NO.1给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时原创 2020-08-02 23:46:31 · 103 阅读 · 0 评论 -
2020牛客暑期多校训练营第五场
赛题链接:请点击D题:Drop Voicing思路:通过理解题意可以知道操作Drop−2其实相当于旋转前N−1个数,反转操作相当于把整个数列旋转,那么这两个操作结合一下,就等于:两个操作同时进行时等价于将数列中的某一个数挪到任意的一个位置(可以自己去推演一下),所以我们要求的最小的multi−drop数量其实就是最少移动多少个数才能使整个序列变为不下降的一个序列,于是我们就可以想到只要用动态规划求出这个序列的最长不下降子序列就可以了。DP最长不下降子序列求法是O(n^2),更好的求法是二分求最长原创 2020-07-29 22:37:39 · 112 阅读 · 0 评论 -
找出数组中出现次数超过一半的数(面试题)
题目:现在有一个数组,已知一个数出现的次数超过了一半,请用O(n)的复杂度的算法找出这个数。解法方法一:创建一个unordered_map,key为数组中的数,value为此数出现的次数。遍历一遍数组,用unordered_map统计每个数出现的次数,并用两个值存储目前出现次数最多的数和对应出现的次数。这个解法是最简单的,我们来分析一下时间复杂度和空间复杂度,由于这个map底层实现使用hash算法来实现的,故时间复杂度可以为O(n),那么空间复杂度呢?很明显也是O(n)的。————————————原创 2020-07-25 09:04:41 · 959 阅读 · 0 评论