- 博客(8)
- 收藏
- 关注
原创 力扣刷题-56 - I. 数组中数字出现的次数、位运算的应用
一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。c++位运算位运算计算机中是用二进制存储数据。一个字节包含8个位,每个“1”或者“0”就是一位。①.按位与:&两个位都是1结果才是1,只要有一个是0,结果就是0;a&1== 1//a末尾是1,a是奇数 ②.按位与...
2020-04-28 10:06:46 207
原创 快速排序算法
快速排序基本思想 快速排序是基于分治的思想实现的。一个有序的序列总可以分为两部分:找一个基准值把序列一分为二,左边的区间中原始值总是小于等于基准值,右边区间中元素值总数大于等于基准值。对左右两个区间采用相同的方法直到子区间的元素个数为1,则每个基准值的位置都已正确归位置。 基本实现思路: ①.选取一个基准值,一般选择起始位置的值。 ②.左右两端开始遍历,右侧区间中找一个小于基准...
2020-04-27 16:54:46 198
原创 力扣刷题-51.数组中的逆序对、归并排序、分治思想
在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。 示例 1: 输入: [7,5,6,4] 输出: 5分治思想 分治就是分而之,面对一个规模复杂的问题,把它分解成一系列的简单子问题,对子问题求解的结果进行合并从而实现对整个问题的求解。 通过不断的递归,每次尽可能的缩小问题的规模,直至满足基线条件;...
2020-04-24 14:23:56 353
原创 广度优先搜索(BFS)模版
BFS BFS是把每一层的所有节点都访问完后,再进行下一层的遍历。用队列(queue)保存将要访问的节点,并且要标记每个节点是否已访问过,以确保每个节点只访问一次。BFS常用来解决最短路径的问题。代码模版int depth = 0 # 记录遍历到第几层,当前在第几层则和源点的距离为几while( !queue.empty())//队列非空{ depth++;// i...
2020-04-22 11:03:38 178
原创 力扣刷题-47.全排列Ⅱ、深度优先搜索
给定一个可包含重复数字的序列,返回所有不重复的全排列。深度优先搜索(DFS) 深度优先搜索就是在每一步对每一种可能的选择一条道走到底,然后再回过头尝试另外一种选择。 深度优先搜索的关键是要考虑“当前这一步”该如何做,至于“下一步”该怎么做和当前这一步的解决方法是一样的。在进行当前步的选择之前要确定已经做出的选择列表,然后在剩余可供选择的每一种可能进行遍历,对于每一种选择将选择结果...
2020-04-22 10:42:48 198
原创 lower_bound和upper_bound
需要引用头文件 #include <algorithm>lower_bound采用二分查找在一个有序序列 [i,j) 中,返回第一个 >= 目标值的元素的迭代器 itupper_bound采用二分查找在一个有序序列 [i,j) 中,返回第一个 > 目标值的元素的迭代器 it使用示例 vector<int> nums = {0...
2020-04-15 16:25:06 124
原创 力扣刷题-542.01矩阵
给定一个由 0 和 1 组成的矩阵,找出每个元素到最近的 0 的距离。两个相邻元素间的距离为 1 。注意: 给定矩阵的元素个数不超过 10000。 给定矩阵中至少有一个元素是 0。 矩阵中的元素只在四个方向上相邻: 上、下、左、右。题目分析求最短距离 求最短距离,一般采用广度优先搜索的算法,从源点出发,最先遍历到的目标点,一定是距离源点最短的点,遍历增加一层则距离加1...
2020-04-15 11:49:56 387
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人