数据结构与算法
良月柒
一个不羁的码农,终生学习者。
展开
-
【算法实战系列】两数之和
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]题目解析...原创 2018-12-13 17:45:29 · 3082 阅读 · 0 评论 -
【探索初级算法】LeetCode数组篇(1 - 5题)
从排序数组中删除重复项给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为1,2。你不需要考虑数组中超出新长度后面的...原创 2018-12-24 19:14:09 · 511 阅读 · 1 评论 -
【探索初级算法】LeetCode数组篇(6 - 11题)
两个数组的交集 II给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2,2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [4,9]说明:输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。 我们可以不考虑...原创 2019-01-07 14:54:20 · 231 阅读 · 0 评论 -
【算法实战系列】无重复字符的最长子串
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字符的最长...原创 2018-12-23 17:12:50 · 205 阅读 · 0 评论 -
时空复杂度(时间复杂度/空间复杂度)O(1)、O(n)、O(n^2)、O(log n)、O(n log n)是什么意思
这些都是算法时空复杂度的表示。不仅仅用于表示时间复杂度,也用于表示空间复杂度。 O后面的括号中有一个函数,指明某个算法的耗时/耗空间与数据增长量之间的关系。其中的n代表输入数据的量。O(1)解析O(1)就是最低的时空复杂度了,也就是耗时/耗空间与输入数据大小无关,无论输入数据增大多少倍,耗时/耗空间都不变。 哈希算法就是典型的O(1)时间复杂度,无论数据规模多大,都可以在一次计算后找...原创 2018-12-15 14:26:58 · 47530 阅读 · 50 评论 -
【十大编程算法】算法一:快速排序算法
快速排序算法快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。快速排序是对冒泡排序的改进,它使用分治法的思想,每次循环根据指定的基准数,将...原创 2018-12-14 19:51:21 · 2649 阅读 · 0 评论 -
快速排序法为什么一定要从右边开始的原因
这里两个while的顺序是不能改变的,想一想:假设对如下进行排序:如上图,6在左,9在右 我们将6作为基数。假设从左边开始(与正确程序正好相反)while (nums[i] <= index && i < j) { i++; }while (nums[j] >= index && j > i) { ...原创 2018-12-14 19:50:28 · 22871 阅读 · 7 评论 -
【算法实战系列】两数相加
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -...原创 2018-12-20 12:19:32 · 4401 阅读 · 2 评论 -
验证回文字符串
验证回文字符串给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: "A man, a plan, a canal: Panama"输出: true示例 2:输入: "race a car"输出: false 解题思路:先遍历整个字符串,只保留字母和数字字符,然后通...原创 2019-01-23 15:51:52 · 123 阅读 · 0 评论