06 2020 档案

摘要:原题链接 题解 题目的大意就是利用两个栈来模拟队列的插入和删除,最容易想到的就是声明两个栈a, b,a这个栈用来做插入,b用来做删除作用。 当我们数据插入到栈中的,栈中的数据顺序是和删除的顺序相反的,①这就可以利用b这个栈了,将a中的数据弹出,依次压入b中,那么b中就是删除的顺序了。 ②当我们删除的 阅读全文
posted @ 2020-06-30 11:29 Lngstart 阅读(87) 评论(0) 推荐(0)
摘要:原题链接 分治方式 这个题目就是快速排序的一个变种(当然直接排序然后输出也是可以的),但是这里使用的是快速选择排序,在快速排序的过程之中可以把答案给找出来。 首先从快排的过程是:先选择一个基准值x,然后根据x将数组二分为了>=x和<=x的两个区间(这里是按降序的规则)然后再进行递归处理。 根据上述的 阅读全文
posted @ 2020-06-29 15:02 Lngstart 阅读(128) 评论(0) 推荐(0)
摘要:原题链接 题解 要求最小的交换次数,那么就可以使用bfs来做,可以把每一次的交换之后的图抽象成一个节点,那么每次转移状态就相当于向下一个节点走,走过的边的权重为1(不是在原来的3*3的图上做bfs),这样就可以使用dfs做了 需要解决的问题是: ①每一个状态该如何表示 ②如何记录每个状态的距离 ③什 阅读全文
posted @ 2020-06-28 17:09 Lngstart 阅读(124) 评论(0) 推荐(0)
摘要:1.两数之和 原题链接 题解 在数组中找到一组数组使得他们的和为目标值,最容易想到的方式是暴力的做法,直接利用两个循环 代码如下: class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { int n=n 阅读全文
posted @ 2020-06-28 13:52 Lngstart 阅读(121) 评论(0) 推荐(0)
摘要:原题链接 题解 因为每一条边的权重都是1,所以可以使用bfs查找最短路径,题目中要求的要记录最短路径并打印出来,利用一个二维数组记录该点是由哪一个点拓展而来(bfs找到的时候就是最短路径) 代码如下 #include <iostream> #include <algorithm> #include 阅读全文
posted @ 2020-06-21 13:02 Lngstart 阅读(171) 评论(0) 推荐(0)