阅读 168

LeetCode - Solved Algorithms

不能一直是个码农

  若不能精通数据结构与算法,路只会越走越窄,也很难摆脱码农的身份。我们不能一直是个码农。

  最大的障碍并不是基础与出身,而是自我设限,固步自封,请永远不要放弃挣扎。忘记年龄,归零心态,你一直可以的。

更新说明

1. 仓库地址:LeetCode - Solved Algorithms

2. 文件命名:LeetCode题号+题目,如:

3. 已解算法列表:

题号·题目 题目描述 解法&思路
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,将该数组升序排列。 参考

4. 解题原则

  每一题的解法都会尽可能包含多种解题思路,还会挑一部分经典的算法,从时间复杂度与空间复杂度以及稳定性方面来对比不同解法的性能。

  每日随机更新一题,优先更新热门算法,题库刷完为止。算法主要使用C语言实现,这要求我们能自己手写一些常用的数据结构,比如哈希表等,这样可以加深我们对数据结构的理解。

致敬

感谢 Lisanaaa 等算法大佬的 算法专栏 和答疑解惑。

关注下面的标签,发现更多相似文章
评论