
算法杂烩
文章平均质量分 62
各种算法题总结
拓荒探险者
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Ubuntu上搭建Ajenti控制面板
直接看博文https://ywnz.com/linuxyffq/7309.html,亲测有效。原创 2020-12-07 14:04:34 · 385 阅读 · 0 评论 -
节点数组转换成二叉树
为了方便调试leetcode有关二叉树的测试用例,编写了这样一个函数,代码如下:#include<iostream>#include<vector>#include<algorithm>#include <time.h> using namespace std;struct TreeNode { int val; TreeNode* left; TreeNode* right; TreeNode(int x) :原创 2020-05-15 14:01:17 · 327 阅读 · 0 评论 -
【C++】链表的归并排序merge
ListNode* merge(ListNode *head1, ListNode *head2) { if (head1 == nullptr){ return head2; } if (head2 == nullptr){ return head1; } ...原创 2020-05-07 20:32:05 · 317 阅读 · 0 评论 -
【二叉树】全面剖析层序遍历算法
思路是很简单。首先在队列中预存好整棵树的根节点。然后不断地从队列中取出当前层的节点,以及加入下一层的节点。如果你只是按照层序的顺序遍历,那很简单。但如果你在每一层结束之后还需要做一些额外操作(比如换行等),那么就有一些细节需要注意。这里主要是剖析一下后面的情况。如果在每一层的最后都需要一些额外操作,那么每一层的尾节点(每一层的最后一个节点)很关键,必须先处理完所有普通节点都具有的操作(比如打印当...原创 2020-05-01 22:41:15 · 304 阅读 · 0 评论 -
链表逆序转换reverse(递归法和迭代法)
递归法递归时,同时传递相邻的两个指针。返回逆序链表的头节点(原始链表的尾节点)。ListNode* f(ListNode* pre, ListNode* p){ if (p == nullptr){ return pre; } ListNode *new_head = f(p, p->next); p->next = pre; ...原创 2020-04-24 23:05:47 · 320 阅读 · 0 评论 -
全面剖析二分法二分搜索算法
二叉搜索算法的前提条件: 整个数组必须是有序的。判断某元素是否存在:#include <iostream>#include <vector>#include <assert.h>using namespace std;bool binaryFind(vector<int>& nums, int begin, int e...原创 2020-04-23 19:24:54 · 338 阅读 · 0 评论 -
【百度笔试】有趣的排序
题目:度度熊有一个N个数的数组,他想将数组从小到大 排好序,但是萌萌的度度熊只会下面这个操作:任取数组中的一个数然后将它放置在数组的最后一个位置。问最少操作多少次可以使得数组从小到大有序?思路:直接举例。例如序列为:18,3,14,4,23,5,59,6,17看我图上标记的数字没,这些数字都是不需要被扔到最后一个位置的,因为它们的相对位置已经是正确的了。其他的数字都需要扔到最后一...原创 2020-04-10 02:58:25 · 390 阅读 · 0 评论 -
【百度笔试】寻找三角形
题目:三维空间中有N个点,每个点可能是三种颜色的其中之一,三种颜色分别是红绿蓝,分别用’R’, ‘G’, 'B’表示。现在要找出三个点,并组成一个三角形,使得这个三角形的面积最大。但是三角形必须满足:三个点的颜色要么全部相同,要么全部不同。思路:笨办法,利用海伦公式,各种点的组合逐个判断。代码实现:#include <iostream>#include <v...原创 2020-04-10 01:57:16 · 270 阅读 · 0 评论 -
【百度笔试】度度熊回家
题目:一个数轴上共有N个点,第一个点的坐标是度度熊现在位置,第N-1个点是度度熊的家。现在他需要依次的从0号坐标走到N-1号坐标。但是除了0号坐标和N-1号坐标,他可以在其余的N-2个坐标中选出一个点,并直接将这个点忽略掉,问度度熊回家至少走多少距离?思路:笨办法,忽略每一个点都试试(将vec[i]=vec[i-1],实际上就是忽略了vec[i]),看看哪一个值最小。时间复杂度为&nbs...原创 2020-04-10 00:04:44 · 199 阅读 · 0 评论 -
【百度笔试】买帽子
题目:度度熊想去商场买一顶帽子,商场里有N顶帽子,有些帽子的价格可能相同。度度熊想买一顶价格第三便宜的帽子,问第三便宜的帽子价格是多少?思路:用set去重,而且set底层实现是红黑树,是有序的。所以,set是最合适的容器。需要注意的是,set不支持随即访问,所以只能将iterator一步一步地挪。代码实现:#include <iostream>#include <...原创 2020-04-09 23:17:03 · 274 阅读 · 0 评论 -
【网易编程题】乘积
题目:思路:将数组从大到小排序。从最大的数开始减1,直到B能整除它,然后B=B除以这个数。以此类推。奇怪的是,我只考虑了减1的情况,也就是默认所有数相乘后是大于等于B的。我也不知道为什么,所有case就全部通过了。#include <iostream>#include <vector>#include <algorithm>using nam...原创 2020-04-06 17:42:44 · 484 阅读 · 0 评论 -
【网易编程题】翻倍
题目:思路:很简单。一直p = p*q,同时用count计数,直到A+p>=B为止。反正总得有一次A+p操作,所以最终答案是count+1。#include <iostream>#include <vector>using namespace std;int main(){ int n; cin >> n; f...原创 2020-04-06 17:04:29 · 352 阅读 · 0 评论 -
【网易编程题】序列交换
题目:思路:情况1:所有元素全为奇数或全为偶数,则无法进行任何交换,直接输出原数组。情况2:如果既有奇数有用偶数,奇数(偶数)完全可以拿偶数(奇数)当跳板,进行奇奇交换或偶偶交换,那么所谓的“只允许奇偶交换”实际上没有任何限制作用。直接从小到大sort出答案。#include <iostream>#include <vector>#include &l...原创 2020-04-06 15:24:36 · 290 阅读 · 0 评论 -
【网易编程题】圆环切割
题目:小易有n个数字排成一个环,你能否将它们分成连续的两个部分(即在环上必须连续),使得两部分的和相等?思路:开始时,将第1个元素当作序列1,其余元素组成序列2。i1指向序列1的起始位置,i2指向序列2的起始位置。当序列1之和小于序列2之和时,i1向前移动,吃掉序列2的尾巴;反之,i2向前移动,序列2吃掉序列1的尾巴。如果序列1之和与序列2之和相等,则成功。否则,如果i2循环一圈又回到了初...原创 2020-04-06 14:42:49 · 1223 阅读 · 0 评论 -
【网易编程题】倒数排列
题目:思路:正数第Q个排列与倒数第Q个排列的每一位相加正好等于n+1。#include <iostream>using namespace std;int main(){ int n; cin >> n; for (int i = 0; i < n; ++i){ int t; cin >...原创 2020-04-06 01:30:43 · 268 阅读 · 0 评论 -
【网易编程题】逆序对距离之和【case通过率仅为60%,但我感觉思路应该是对的】
前言:case通过率仅为60%,我实在找不出问题出在哪里了,但思路是很清晰的。题目:思路:在归并排序求逆序对算法(参考《剑指offer》面试题51)的基础上,稍加修改,不仅仅用count统计逆序对数量,而且用for循环遍历每一个逆序对,然后求其逆序对距离之和。数据结构:因为归并排序之后,元素原来的下标会乱掉,所以用pair<值, 原下标>存储每个元素,即pair<...原创 2020-04-06 00:24:22 · 710 阅读 · 0 评论 -
【网易编程题】数字圆环
题目:思路:将数组排好序,找出最大值,第二大值及第三大值。如果最大值小于第二大值加第三大值,则为YES;否则为NO。过程很简单,但我不知道为什么。#include <iostream>#include <algorithm>#include <vector>using namespace std;int cmp(const long long...原创 2020-04-05 18:29:52 · 504 阅读 · 0 评论 -
【网易编程题】三个人吃葡萄
题目:思路:参考:https://blog.youkuaiyun.com/weixin_41687289/article/details/101150439注意:数字比较大,我用的unsigned long long类型。#include <iostream>using namespace std;void swap(unsigned long long &a, un...原创 2020-04-05 17:41:22 · 595 阅读 · 0 评论 -
【网易编程题】小易希望把这些个积木变成严格递增的
题目:思路:很简单。对于每一堆,你只需要留下最少的积木就可以了,第i堆积木最少要i个木块才可以保证严格单调递增。如果多了,把多的往背包里塞;如果少了,把从背包里拿出来补充这个堆,若不够补充,则失败。#include <iostream>#include <vector>using namespace std;int main(){ int n;...原创 2020-04-05 15:10:00 · 538 阅读 · 2 评论 -
【网易编程题】序列维护
题目:小易在维护数据的时候遇到一个需求,具体来说小易有一系列数据,这些数据了构成一个长度为n的数字序列,接下来小易会在这个序列上进行q次操作。每次操作有一个查询的数字x,小易需要将序列数据中所有大于等于x的数字都减一,并输出在本次操作中有多少个数字被减一了。小易犯了难,希望你能帮帮他。思路:这个题本身并不难,但是容易超时。稍微对数组处理下,即对数组排下序,比较失败后提前break跳出循...原创 2020-04-05 00:54:30 · 869 阅读 · 0 评论 -
【网易编程题】小易的英语软件
原题:小易是班级的英语课代表, 他开发了一款软件开处理他的工作。小易的软件有一个神奇的功能,能够通过一个百分数来反应你的成绩在班上的位置。“成绩超过班级 …% 的同学”。设这个百分数为 p,考了 s 分,则可以通过以下式子计算得出 p:p = ( 分数不超过 s 的人数 - 1) 班级总人数突然一天的英语考试之后,软件突然罢工了,这可忙坏了小易。成绩输入这些对于字写得又快又好的小易当然...原创 2020-04-04 23:54:36 · 588 阅读 · 0 评论 -
【网易编程题】小易魔法王国采购魔法神器
原题:小易准备去魔法王国采购魔法神器,购买魔法神器需要使用魔法币,但是小易现在一枚魔法币都没有,但是小易有两台魔法机器可以通过投入x(x可以为0)个魔法币产生更多的魔法币。魔法机器1:如果投入x个魔法币,魔法机器会将其变为2x+1个魔法币魔法机器2:如果投入x个魔法币,魔法机器会将其变为2x+2个魔法币小易采购魔法神器总共需要n个魔法币,所以小易只能通过两台魔法机器产生恰好n个魔法币,小易...原创 2020-04-04 22:26:34 · 425 阅读 · 0 评论