牛课网编程记录

基础算法

  

2019-06-16 11:00:36

1.微信红包: 春节期间小明使用微信收到很多个红包,非常开心。在查看领取红包记录时发现,某个红包金额出现的次数超过了红包总数的一半。请帮小明找到该红包金额。写出具体算法思路和代码实现,要求算法尽可能高效。 给定一个红包的金额数组gifts及它的大小n,请返回所求红包的金额。 若没有金额超过总数的一半,返回0。 测试样例: 2、生成格雷码: 在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同...

首先描述一下8皇后问题:         在8x8的国际象棋棋盘上,放上八个皇后,使得每一个皇后都不能直接吃掉其他的皇后。在国际象棋中,皇后可以吃掉同行、列、45°线、135°线上的其他子。 介绍一下回溯法:         回溯法与穷举法非常相似,只是通过“剪枝”的思想,减少穷...

 常见排序算法包括有:冒泡,简单选择,直接插入,快排,归并排序,堆排序,希尔排序 目录 冒泡排序 思想: 复杂度分析:  选择排序 思想: 复杂度分析 直接插入排序 思想: 复杂度分析 希尔排序 思想 复杂度分析 快速排序 思想: 复杂度分析  快排优化  归并排序 思想 复杂度分析 归并优化 堆排序 思想 复杂度分析  总结 冒泡排序 思想: 冒...

算法日志day01

c  算法  基础

  

2019-07-08 12:23:12

编辑细节 要尽量缩小变量的有效范围,可以避免出现不必要的变量冲突,所以尽量在需要变量的地方定义和使用,有效作用区域尽量小一点 注意int类型的范围-2147483648——2147483649;如果有溢出风险,则用“long long”类型,scanf中用“%lld” 注意doule和int类型的相互转换 double和flo...

初探动态规划

算法  基础  动态规划

  

2019-08-29 23:16:56

Q:为什么要学动态规划? A:因为笔试必考。 Q:为什么笔试喜欢考动态规划? A:因为动态规划比较好出题,可以检验思考方式,而且相对比较难。 Q:为什么动态规划难? A:就像高考最后的物理大题一样,解题思路大同小异,但每个人做出来都不一样,更何况很多人都还做不出来。 Q:什么是动态规划? A:这个自己 Google 吧,不在论述范围之内。 Q:看懂这篇文章需要什么水准? A:懂递归,会写递归。 先...

天啦天啦,我突然发现我不会分解质因数,写满了一脸的方方方,马上去恶补,phew,还好炒鸡简单 核心代码 思路:就是数学上常用的短除法啦,用c++实现即可。我们来思考数学上怎么短除,对于一个数 x 我们每次都除以它的最小质因数,直到除出来的数为质数(不能再除)为止。那么这过程中所有的除数都是这个数 x 的质因数 比如(画板不好操作,勿嫌) 对照着程序,就懂啦~~~while的作用就是统计到这种相同的...

微信公众号:一个优秀的废人 如有问题或建议,请后台留言,我会尽力解决你的问题。 什么叫冒泡排序法? 相信有接触过算法的朋友多少都了解冒泡排序法,那么什么是冒泡排序法呢?冒泡排序,英文名称(Bubble Sort)是一种基础的交换排序算法,在日常工作中经常会用到,例如:页面数据需按时间先后排序,这本质上也是一种冒泡排序法。 喝过可乐的朋友都知道,可乐里面的气泡会向上浮,这就是冒泡排序一种最形象的例子...

排序 今天讲了排序算法,在这里做一下总结 目录 冒泡排序 快速排序 归并排序 冒泡排序 快速排序 快速排序是基于分治的思想, 最差时间复杂度是O(N^2) 它的平均时间复杂度为O(NlogN) 先从比较的数组中挑出一个基准数,然后用两个指针, 指针i指向数组开头,另一个指针j指向数组结尾, 通过一趟排序将数组分成两个部分,其中一个部分都比关键字小,另一个部分都比 关键字 大,然后再分别对这两部分进...

剑指offer——链表中环入口节点 题目:给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 解题思路:通过设置两个指针,快慢指针,其中快指针每次走两步,满指针每次走一步 草图如下: 其中从开始到环的入口长度为x,假设在环(环长度为n)上的B点相遇,设环入口到B点为a,则B到A(顺时针)为n-a 有次可推出: 快指针走过的长度: x+n*K+a(其中...

前言 本文根据Algorithms(《算法》)一书,介绍算法的基础知识,围绕数据抽象,介绍了包括背包、队列和栈三种集合类数据类型的定义以及代码实现,最后讲解了链表的相关定义以及使用链表实现集合类数据类型。 准备工作 在开始聊数据抽象之前,我们需要先弄清楚几个概念,都是很基础的东西,不过话说回来,算法本就该是编程的基础,这些基础的概念是我们开始学习算法的前提: 1、什么是数据类型? 2、什么是数据抽...

1、 课程目标 排序是任何语言都会使用到的功能之一,然成果排序的算法有很多,对空间的要求及其时间效率也不尽相同。 本文章以Java语言示例,通过对空间要求、时间效率要求,来对比各种排序算法的使用场景 2、适用对象 Java语言初学者 Java算法爱好者 3、相关概念 3.1 排序概念 排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 3.2 排序算法 排序算法,...

一、冒泡算法 冒泡算法的一个重点特征是:体现冒泡的过程,大的沉底,小的上浮 曾经忽略这个过程,面试被考到了。 假定数组下标为[0,1,...,n] 首先从第一个数据开始,与第二个数据相比,若大于第二个数据,则将两个数据的位置进行交换 将指针由第一个数据指向第二个数据,比较第二个数据与第三个数据,如果第二数据比第三个数据大,则交换第二个数据与第三个数据的位置。 以此类推,完成第一轮排序(指针指向 n...