若不能精通数据结构与算法,路只会越走越窄,也很难摆脱码农的身份。咱们不能一直是个码农。git
最大的障碍并非基础与出身,而是自我设限,固步自封,请永远不要放弃挣扎。忘记年龄,归零心态,你一直能够的。github
题号·题目 | 题目描述 | 解法&思路 |
---|---|---|
1-两数之和 | 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你能够假设每种输入只会对应一个答案。可是,你不能重复利用这个数组中一样的元素。 | 参考 |
2-两数相加 | 给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,而且它们的每一个节点只能存储一位数字。若是,咱们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您能够假设除了数字 0 以外,这两个数都不会以 0 开头。 | 参考 |
3-无重复字符的最长子串 | 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 | 参考 |
4-寻找两个有序数组的中位数 | 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,而且要求算法的时间复杂度为 O(log(m + n))。你能够假设 nums1 和 nums2 不会同时为空。 | 参考 |
204-计数质数 | 统计全部小于非负整数 n 的质数的数量。 | 参考 |
344-反转字符串 | 编写一个函数,其做用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你能够假设数组中的全部字符都是 ASCII 码表中的可打印字符。 | 参考 |
387-字符串中的第一个惟一字符 | 给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。若是不存在,则返回 -1。例: s = "leetcode",返回 0,s = "loveleetcode",返回 2。注意:您能够假定该字符串只包含小写字母。 | 参考 |
509-斐波那契数 | 斐波那契数,一般用 F(n) 表示,造成的序列称为斐波那契数列。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0, F(1) = 1, F(N) = F(N - 1) + F(N - 2)。其中 N > 1, 给定 N,计算 F(N)。 | 参考 |
704-二分查找 | 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target,写一个函数搜索 nums 中的 target,若是目标值存在返回下标,不然返回 -1。 | 参考 |
912-排序数组 | 给定一个整数数组 nums,将该数组升序排列。 | 参考 |
每一题的解法都会尽量包含多种解题思路,还会挑一部分经典的算法,从时间复杂度与空间复杂度以及稳定性方面来对比不一样解法的性能。算法
每日随机更新一题,优先更新热门算法,题库刷完为止。算法主要使用C语言实现,这要求咱们能本身手写一些经常使用的数据结构,好比哈希表等,这样能够加深咱们对数据结构的理解。数组
感谢 Lisanaaa 等算法大佬的 算法专栏 和答疑解惑。数据结构