随笔分类 -  数据结构&算法

数据结构和算法相关知识
摘要:昨晚难得忙的差不多,自己有点时间,做了道中等难度的题 题目— "LeetCode盛最多水的容器" 给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使 阅读全文
posted @ 2019-08-13 10:09 小小范同学 阅读(384) 评论(0) 推荐(0)
摘要:憋了两周终于把开题报告憋出来了,再一次证明自己不适合搞学术,哎……,花了点时间把报告中提到的粒子群算法看了看,看了些资料,用java跑起来。 算法简介 粒子群算法最先由Barnhart博士和Kennedy博士于1995 年提出,是一种源于对鸟群捕食行为的研究而发明的进化计算技术,原理是模仿鸟群寻觅食 阅读全文
posted @ 2019-05-20 20:09 小小范同学 阅读(618) 评论(0) 推荐(0)
摘要:又很久没有做做题了,哎…… 题目 LeetCode字母异位词分组 给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。 示例: 输入: ["eat", "tea", "tan", "ate", "nat", "bat"], 输出: [ ["ate","eat","t 阅读全文
posted @ 2019-05-11 16:12 小小范同学 阅读(297) 评论(0) 推荐(0)
摘要:题目来源:LeetCode 给定一个数字 N,当它满足以下条件的时候返回 true: 把原数字旋转180°以后得到新的数字。 如 0, 1, 6, 8, 9 旋转 180° 以后,得到了新的数字 0, 1, 9, 8, 6 。 2, 3, 4, 5, 7 旋转 180° 后,得到的不是数字。 易混淆 阅读全文
posted @ 2019-04-27 11:19 小小范同学 阅读(357) 评论(0) 推荐(0)
摘要:又是很久没有练习了,前段时间的字节跳动和阿里笔试题,真的是惨绝人寰,这道题,难度定义为中等,又做了一个小时,哎,为秋招深深的担忧啊! 题目来源LeetCode 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例 1: 输入: "babad" 输出: "ba 阅读全文
posted @ 2019-04-25 21:27 小小范同学 阅读(446) 评论(0) 推荐(0)
摘要:题目来源:华为实习笔试题 给定一个字符串,其中含有括号(大括号,中括号,小括号),括号可以嵌套,且保证括号是配对的,括号前面会有一个数字,要求对字符串进行展开,不带括号,且括号中的内容需要连续出现括号前面数字规定的次数,并且倒序输出;示例 ,输出结果: 分析 (当时内心活动[废话])这是三道题中的第 阅读全文
posted @ 2019-04-11 20:05 小小范同学 阅读(514) 评论(0) 推荐(0)
摘要:题目来源:华为模拟题 题目描述 华为模拟测试题,蛮简单,一个长度为n的整型数组,乱序存放0至n 1,要求只能交换0和其中的一个数,对数组进行排序(也没有说升序还是降序),交换的函数他已经写好了。给出如下结构: 要求完成这个sort函数,在sort函数中调用 函数进行排序,注意这里的 是指要调换的数, 阅读全文
posted @ 2019-04-09 21:40 小小范同学 阅读(2258) 评论(0) 推荐(0)
摘要:题目LeetCode 无重复字符的最长字串 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例1 示例2 分析与实现 解法一 分析 这里面的难度在于,从 开始遍历,遇到相同字符后结束,记录长度。然后从 开始继续遍历 实现(java) 这里使用了list作为字串的存储,主要是便于判 阅读全文
posted @ 2019-03-11 22:14 小小范同学 阅读(311) 评论(0) 推荐(0)
摘要:题目 LeetCode 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例: 分析 阅读全文
posted @ 2019-03-09 10:54 小小范同学 阅读(862) 评论(0) 推荐(0)
摘要:题目 来自编程之美 给定一个数组,快速从其中找出两个数满足其之和等于给定的数,这里假设其中至少存在一组符合要求的解; 分析 这里的关键在于快速 最为愚钝的方式当然是:穷举,从数组中任意取出两个数字进行判断,但是时间复杂度为$O(N^2)$; 一般是数组,首先进行排序,采用时间复杂度为$O(Nlog_ 阅读全文
posted @ 2019-03-07 20:45 小小范同学 阅读(343) 评论(0) 推荐(0)
摘要:思想 快速排序每一趟排序,都会寻找一个基准元素,有的采用第一个元素,有的会随机生成一个,但是基本思想是不变的,一趟排序结束,会形成以基准元素为分界点的两部分,其中左边比基准元素小(假设从小到大排序),右边比基准元素大。然后再以相同的方法处理左边和右边两部分,即递归。 实现(java) import 阅读全文
posted @ 2019-03-06 21:47 小小范同学 阅读(193) 评论(1) 推荐(0)
摘要:思想 所谓贪心算法,就是在走的每一步都不考虑后面的操作,即不考虑全局,只关注当下,即寻找局部最优解,因此贪心算法,并不能保证找到全局最优解。 实际上,贪心算法用得很少,除非在已知使用贪心算法能过找到最优解时使用。 贪心算法在作出每一步的决策之后,将不可改变 例子 有如下的一个任务序列 ,表示5个任务 阅读全文
posted @ 2019-03-05 14:21 小小范同学 阅读(215) 评论(0) 推荐(0)
摘要:思想 基本思想: 冒泡排序,类似于水中冒泡,较大的数沉下去,较小的数慢慢冒起来,假设从小到大,即为较大的数慢慢往后排,较小的数慢慢往前排。 直观表达,每一趟遍历,将一个最大的数移到序列末尾。 算法描述 1. 比较相邻的元素,如果前一个比后一个大,交换之。 2. 第一趟排序第1个和第2个一对,比较与交 阅读全文
posted @ 2019-03-04 22:04 小小范同学 阅读(138) 评论(0) 推荐(0)
摘要:背景 项目中有一个查询工作量,可以将查询的结果导出到Excel表中。在Excel工具中,有一个合并居中功能,可以将选中的单元格合并成一个大的单元格。现在需要在程序中直接实现查询结果的汇总, 问题分析 话不多说,上图分析: 如图,对于第一列,前三行的值都为A,那么就是需要执行合并。与此同时,1 3行后 阅读全文
posted @ 2019-03-04 20:28 小小范同学 阅读(3099) 评论(0) 推荐(0)
摘要:思想 每一次遍历待排序的序列,记录最小(大)值的下标,和待排序第一个元素进行比较,如果小(大)与待排序第一个元素,交换 实现(java) 分析 时间复杂度:$O(N^2)$ 空间复杂度: $O(1)$ 稳定性: 不稳定 阅读全文
posted @ 2019-03-01 21:36 小小范同学 阅读(113) 评论(0) 推荐(0)
摘要:回顾 在前面两篇文章已经实现了 "水王id出现次数超过一半" ,以及 "水王id出现次数刚好一半" <! more 分析 借助上面水王id出现次数刚好出现一半的分析,其实这里就是找出数组中出现次数前三的元素,具体的分析,见前面两篇文章,其实问题的实质以及分析的基本方向都是相似的。 实现 / @Aut 阅读全文
posted @ 2018-12-20 21:26 小小范同学 阅读(153) 评论(0) 推荐(0)
摘要:回顾 寻找发帖水王的问题总结起来就是在一个数组中某一个元素出现次数超过了数组长度的一半,那么可以很顺利的找到这个元素,实现见 ""编程练习:寻找发帖水王"" <! more 扩展 上面的问题中,强调了某一个元素出现次数超过了数组长度的一半,那么试想一下,如果这个元素刚好只有一半, 比如 那么按照上面 阅读全文
posted @ 2018-12-20 20:34 小小范同学 阅读(158) 评论(0) 推荐(0)
摘要:题目: 寻找发帖"水王" 来源: 编程之美 分析 衍生:就是给定一个数组,其中某个元素出现次数超过了数组长度的一半,找出这个元素 <! more 方法s 方法1 对这个串进行遍历,同时对出现的元素进行计数,可以用map,最后遍历map取出计数值最大的那个元素 方法2 可以对数组进行排序,第N/2个元 阅读全文
posted @ 2018-12-19 21:40 小小范同学 阅读(154) 评论(0) 推荐(0)
摘要:来源: 编程之美 给定一个十进制正整数N,写下从1开始,到N的所有整数,然后数一下其中出现的所有"1"的个数。 例如: <! more N = 2,写下1,2。这样只出现了1个"1" N = 12, 1,2,3,4,5,6,7,8,9,10,11,12。这样1的个数为5; 分析 具体分析见图 实现 阅读全文
posted @ 2018-12-18 20:48 小小范同学 阅读(334) 评论(0) 推荐(0)
摘要:什么是杨辉三角,很简单 输出: [1] [1, 1] [1, 2, 1] [1, 3, 3, 1] [1, 4, 6, 4, 1] [1, 5, 10, 10, 5, 1] [1, 6, 15, 20, 15, 6, 1] [1, 7, 21, 35, 35, 21, 7, 1] [1, 8, 28 阅读全文
posted @ 2017-10-30 21:58 小小范同学 阅读(419) 评论(0) 推荐(0)

点击右上角即可分享
微信分享提示