
算法(数据结构)
数据结构算法
精神抖擞王大鹏
精神抖擞王大鹏
展开
-
数据结构与算法模板总结(一) 排序+二分查找+双指针
数据结构与算法模板总结(一) 排序+二分查找+双指针原创 2020-11-22 01:06:32 · 186 阅读 · 0 评论 -
0001-算法笔记分治法实现棋盘覆盖问题
今天上课老师讲了分治法,下课后自己把程序碼了一遍,还是存在一个疑问--为什么每个方格都会填充到,在下面将会解决并叙述。 首先贴上程序:#include #include #include int tile = 0;int Board[100][100];/* tr:棋盘左上角方格的行号 tc:棋盘左上角方格的列号 dr:特原创 2016-09-19 12:46:14 · 568 阅读 · 0 评论 -
快速排序两种方式实现及优化总结
今天看了快速排序,现在对自己的已知的方法进行总结,欢迎拍砖。 快速排序被认为是20世纪十大算法之一,在排序中,快速排序其实就是我们前面认为最慢的冒泡排序的升级,它们都属于交换排序类。即快排也是通过不断比较和移动交换来实现排序的,不过它的实现,增大了记录的比较和移动的距离,将关键字较大的记录从前面直接移动到后面,关键字较小的从后面直接移动到前面,从而减少了总的比较次数和移动原创 2016-09-26 20:01:20 · 5227 阅读 · 2 评论 -
算法学习(一)分治算法
算法学习(一)分治算法1.1引言 当我们在处理一些问题时,由于这些问题要处理的数据很多,或者求解的过程很复杂,这时如果直接求解将会在时间上花费很长时间,或者根本没办法求出,对于这一类的问题,我们可以先把它分解为几个子问题,找到并求出这些子问题的相应的解,然后再用原创 2016-10-26 21:02:30 · 539 阅读 · 0 评论 -
算法笔记--动态规划求解最长公共子序列问题
动态规划法经常会遇到复杂问题不能简单地分解成几个子问题,而会分解出一系列的子问题。简单地采用把大问题分解成子问题,并综合子问题的解导出大问题的解的方法,问题求解耗时会按问题规模呈幂级数增加。为了节约重复求相同子问题的时间,引入一个数组,不管它们是否对最终解有用,把所有子问题的解存于该数组中,这就是动态规划法所采用的基本方法。 【问题】 求两字符序列的最长公共字符子序列问题...原创 2016-10-17 21:05:51 · 1262 阅读 · 0 评论 -
算法学习(二) 贪婪算法
算法学习(二)贪婪算法1.1引言 贪婪算法,基本思路就是不求最优解,而只希望得到较为满意解的一种方法,通过贪婪算法,一般可以快速的得到满意的解。因为它省去了要求最优解而去穷举所有可能的步骤,贪婪算法的特点是,通过做局部的最优选择而达到全局的最优情况。1.2 算法思路 贪婪算法基本思路:从问题的某一个初始解出发,逐步的逼近给定的目标,以尽可能地求得更好的解。当达到算法的某原创 2016-10-27 17:10:11 · 623 阅读 · 0 评论 -
"锦鲤"抽奖活动背后的随机抽样算法
算法菜鸡一枚,如叙述有误,欢迎大佬拍砖指教最近"锦鲤"活动很盛行,那么在思考锦鲤活动背后抽奖的逻辑到底是怎样的?不妨我们先来将问题抽象化:从N个样本中随机不重复地抽取K个样本,其中N的长度很大或者未知,如何等概率或者不等概率(因为有些商家活动有助力功能,助力的票数越多,中奖的概率越大)的抽取出K个样本;1.相同概率(一)抽签抽样:简述:首先容易想到的是抽签抽样。即当由 ...原创 2018-10-26 19:26:25 · 1822 阅读 · 0 评论 -
LeetCode第一阶段(一)【数组篇】
LeetCode 283 Move Zeros给定一个数组nums,写一个函数,将数组中所有的0挪到数组的末尾,而维持其他所有非0元素的相对位置。举例:nums = [0,1,0,3,12],函数运行后的结果为[1,3,12,0,0]程序初始:传入的是原始数组numsclass Solution: def moveZeroes(self, nums: List[int]) ->...原创 2019-09-16 09:56:42 · 866 阅读 · 0 评论