![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 82
JackMa_
每个优秀的人,都有一段沉默的时光,那段时光,是付出了很多努力,却得不到结果的日子,我们把它叫做扎根。
展开
-
算法--100盏灯问题
题目一间屋子里有100盏灯排成一行,按从左至右的顺序编号1、2、3、4、5…99、100,每盏灯都有一个开关,开始全部都关着,现有100个学生,1、第1个学生按了1的倍数的灯,也就说被按灯的编号为:1、2、3、4、5、6、7、8…99、100 2、第2个学生按了2的倍数的灯,也就说被按灯的编号为:2、4、6、8、10…98、100 3、第3个学生按了3的倍数的灯,也就说被按灯的编号为:3、6、9、12…99 4、以此类推… 100、第100个学生把100的倍数灯,,也就说被按灯的编号为:1原创 2022-03-19 16:12:40 · 1397 阅读 · 0 评论 -
Go实现算法:斐波那契数列fibonacci
package mainimport "fmt"func fibonacci(n int) int { if n < 2 { return n } return fibonacci(n-2) + fibonacci(n-1)}func main() { var i int for i = 0; i < 10; i++ { fmt.Printf("%d\t", fibonacci(i)) }}结果如下:0 .原创 2020-08-19 10:45:34 · 814 阅读 · 1 评论 -
Go实现算法:N的阶乘
package mainimport "fmt"func Factorial(n uint64)(result uint64) { if (n > 0) { result = n * Factorial(n-1) return result } return 1}func main() { var i int = 15 fmt.Printf("%d 的阶乘是 %d\n", i, Factorial(uint64.原创 2020-08-19 10:41:55 · 2268 阅读 · 0 评论 -
【leetcode力扣】PHP实现:35. 搜索插入位置
题目:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6]...原创 2020-04-19 20:59:12 · 283 阅读 · 0 评论 -
【leetcode力扣】PHP实现:28. 实现 strStr()
题目:实现strStr()函数。给定一个haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回-1。示例 1:输入: haystack = "hello", needle = "ll"输出: 2示例 2:输入: haystack = "aaaaa", n...原创 2020-04-15 22:58:36 · 307 阅读 · 0 评论 -
【leetcode力扣】PHP实现:21. 合并两个有序链表
题目:将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4解://迭代function mergeTwoLists($l1, $l2){ $dummyHead = new ListNo...原创 2020-04-13 13:05:48 · 290 阅读 · 0 评论 -
【leetcode力扣】PHP实现:26. 删除排序数组中的重复项
题目:给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的...原创 2020-04-12 23:19:45 · 268 阅读 · 0 评论 -
快速排序之PHP实现
前言快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要 Ο(nlogn) 次比较。在最坏状况下则需要 Ο(n2) 次比较,但这种状况并不常见。事实上,快速排序通常明显比其他 Ο(nlogn) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。快速排序使用分治法(Divide and conquer)策略来把一个串行(lis...原创 2020-03-30 17:54:44 · 229 阅读 · 0 评论 -
插入排序之PHP实现
前言插入排序的代码实现虽然没有冒泡排序和选择排序那么简单粗暴,但它的原理应该是最容易理解的了,因为只要打过扑克牌的人都应该能够秒懂。插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序和冒泡排序一样,也有一种优化算法,叫做拆半插入。算法步骤1、将第一待排序序列第一个元素看做一个有序序列,把第二个...原创 2020-03-30 16:38:53 · 314 阅读 · 0 评论 -
选择排序之PHP实现
前言选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。算法步骤1、首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置2、再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。3、重复第二步,直到所有元素均排序完毕。动图演示PHP...原创 2020-03-30 16:30:05 · 245 阅读 · 0 评论 -
交换排序之PHP实现
类似冒泡排序:https://blog.csdn.net/Alen_xiaoxin/article/details/105201729functionExchangeSort($arr){$num=count($arr);//遍历数组for($i=0;$i<$num-1;$i++){//获得当前索引的下一个索引...原创 2020-03-30 16:22:37 · 250 阅读 · 0 评论 -
冒泡排序之PHP实现
前言冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。作为最简单的排序算法之一,冒泡排序给我的感觉就像 Abandon 在单词书里出现的感觉一样,每次都在第...原创 2020-03-30 16:05:45 · 188 阅读 · 0 评论 -
算法的时间复杂度和空间复杂度-总结
通常,对于一个给定的算法,我们要做 两项分析。第一是从数学上证明算法的正确性,这一步主要用到形式化证明的方法及相关推理模式,如循环不变式、数学归纳法等。而在证明算法是正确的基础上,第二部就是分析算法的时间复杂度。算法的时间复杂度反映了程序执行时间随输入规模增长而增长的量级,在很大程度上能很好反映出算法的优劣与否。因此,作为程序员,掌握基本的算法时间复杂度分析方法是很有必要的。算法执...转载 2020-03-11 12:43:27 · 374 阅读 · 0 评论 -
【leetcode力扣】PHP实现:5. 最长回文子串
题目:给定一个字符串s,找到s中最长的回文子串。你可以假设s的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"解:class Solution{ /** * @param String $s * @return...原创 2020-02-27 22:12:42 · 569 阅读 · 0 评论 -
【leetcode力扣】PHP实现:3. 无重复字符的最长子串
题目给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是"abc",所以其长度为 3。输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是"wke",所以其长度为...原创 2020-02-26 21:55:29 · 695 阅读 · 0 评论 -
【leetcode力扣】PHP实现:2. 两数相加
题目给出两个非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> ...原创 2020-02-26 21:03:47 · 1003 阅读 · 0 评论 -
【leetcode力扣】PHP实现:1、两数之和
题目:给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/two-sum著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注...原创 2020-02-26 20:11:41 · 888 阅读 · 0 评论