算法
baburwang
让分享成就你我!
展开
-
还不懂排序算法可以打我了!
排序算法0. 前言1. 冒泡算法2. 插入算法3. 希尔排序4. 归并排序5. 快速排序6. 堆排序7. 基数排序8. 总结0. 前言 评价一个算法的好坏,除了其是否具有较低的时间复杂度之外,还有其稳定性以及空间复杂度。 稳定性的判断标注是数组元素的值相同时,进行元素交换后,相对位置如果发生变化,变化则不具有稳定性。1. 冒泡算法&nb原创 2020-06-16 01:59:09 · 2222 阅读 · 5 评论 -
最简单的方法理解KMP算法
KMP算法 在求解字符串的匹配问题时,最容易让人想到的便是BF算法,但是由于BF的时间复杂度为O(n*m),所以并不是很好。而KMP算法同样用于求解字符串的匹配问题,其时间复杂度为O(n+m),但是并不是所有人都能理解这种算法,甚至去选择死记硬背。这里并不建议如此做,直接进入正题吧。 ...原创 2019-06-24 12:05:34 · 582 阅读 · 1 评论 -
23.合并K个有序列表
题目描述:合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[ 1->4->5, 1->3->4, 2->6]输出: 1->1->2->3->4->4->5->6方法一:想必原创 2018-12-22 23:17:58 · 981 阅读 · 0 评论 -
24.两两交换链表中的节点
题目描述:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.说明:你的算法只能使用常数的额外空间。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。思路:对于该题,改变节点内部的值非常简单。但题目规定我们不能只取改变节点内部的值,所以只要改变指向节点的指针即...原创 2018-12-16 22:57:52 · 139 阅读 · 0 评论 -
16. 最接近的三数之和
题目描述给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).解法一:暴力法思路:只需要三个...原创 2018-12-09 14:16:19 · 343 阅读 · 0 评论 -
19.删除链表倒数第N个节点
题目描述给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。单链表定义如下: /** * public class ListNode { * int val; *...原创 2018-12-01 23:45:51 · 398 阅读 · 0 评论 -
15.三数之和
题目描述给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。 例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4], 满足要求的三元组集合为: [ [-1, 0, 1], [-1, -1, 2] ]最首先想到...原创 2018-11-25 14:51:08 · 197 阅读 · 0 评论 -
13.罗马数字转数字
题目描述罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000例如, ...原创 2018-11-18 12:24:57 · 266 阅读 · 0 评论 -
12.整数转罗马数字
题目描述罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000例如, ...原创 2018-11-17 16:58:08 · 2830 阅读 · 1 评论 -
11. 盛最多水的容器
题目描述给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 说明:你不能倾斜容器,且 n 的值至少为 2。&n...原创 2018-11-03 21:59:34 · 649 阅读 · 0 评论 -
6.Z字形变换
题目描述将字符串 “PAYPALISHIRING” 以Z字形排列成给定的行数: P A H N A P L S I I G Y I R之后从左往右,逐行读取字符:“PAHNAPLSIIGYIR”示例 1: 输入: s = "PAYPALISHIRING", numRows = 3 输出: "PAHNAPLSIIGYIR"示例2: ...原创 2018-11-03 21:00:29 · 338 阅读 · 0 评论 -
2.两数相加
2.两数相加给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8 原因:342 + 465 = 807首先,我们将链表中相原创 2018-10-22 14:49:29 · 197 阅读 · 0 评论 -
只出现一次的数字
只出现一次的数字题目如下:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个 元素均出现两次。找出那个只出现了一次的元素。实例一: 输入: [2,2,1]输出: 1实例二: 输入: [4,1,2,1,2]输出: 4现在我们进行该题的分析,首先要找的元素只出现了一次,那么我们是不是可以遍历整个数组,如果其中那个元素个数超过一的话,则不是我们要找的元素。代码如下:...原创 2018-10-16 22:15:37 · 288 阅读 · 1 评论