算法
忆杰
做最好的自己
展开
-
编程之梯度计算价格
梯度算法计算原创 2023-03-23 22:16:17 · 308 阅读 · 0 评论 -
组合生成算法
给定一个数组:A、B、C、D,输出长度为N的组合,返回所有的组合的方式<?php/** * 组合:数据集$list,组合的个数:$num * @param $list * @param $m * @return [] */function arrangement($list, $num) { $res = []; $count = count($list...原创 2019-04-15 16:07:04 · 812 阅读 · 0 评论 -
串联所有单词的子串
给定一个字符串s和一些长度相同的单词words。找出s中恰好可以由words中所有单词串联形成的子串的起始位置。注意子串要与words中的单词完全匹配,中间不能有其他字符,但不需要考虑words中单词串联的顺序。<?php/** * @param String $s * @param String[] $words * @return Integer...原创 2019-04-13 18:06:13 · 577 阅读 · 2 评论 -
组合计算——拆分一个整数数为N个
将一个数Number按照拆分成N个在(min, max)范围内的数方法一 基本思想:循环1 ~ N,每次循环,都计算随机范围(min , max),判断是否可以生成N个满足要求的数<?php/** * 将一个数按照拆分成N个在(min, max)范围内的数 * @param [type] $number 待拆分的数 * @param [type] $...原创 2019-04-03 16:26:24 · 2281 阅读 · 0 评论 -
删除排序数组中的重复项
一、删除数组中的重复项【无序】<?php/** * 给定一个数组(无序),你需要在原地删除重复出现的元素,使得每个元素只出现一次, * 返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 * @param array $list * @return array new list */function a...原创 2019-04-10 15:00:40 · 188 阅读 · 0 评论 -
数组中只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例输入 :[2,2,1]输出 :1示例2输入 :[4,1,2,1,2]输出: :4<?php/** * 求数组中只出现一次的元素 * 其它元素出现的次数为偶数次 */fu...原创 2019-04-10 14:13:23 · 138 阅读 · 0 评论 -
反转字符串
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例 1输入:["h","e","l","l","o"]输出:["o","l","l","e","h"]示例 2输入:["H"...原创 2019-04-10 14:01:00 · 170 阅读 · 0 评论 -
买卖股票最大收益
给定一个数组,它的第i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能...原创 2019-04-10 11:35:09 · 1159 阅读 · 1 评论 -
判断4个点组成矩形
<?php/** * 判断4个点是否组成矩形 * @param [type] $list [description] * @return boolean [description] */function isJuXing($list){ $v = []; $distance = []; for ($i=0; $i < 3 ; $i+...原创 2019-04-15 16:08:16 · 1495 阅读 · 0 评论 -
快速排序之PHP实现【非递归】
算法过程 设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用第一个数据)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序。一趟快速排序的算法是: 1)设置两个变量I、J,排序开始的时候:I=0,J=N-1; 2)以第一个数组元素作为关键数据,赋值给key,即 key=A[0]; 3)从J开始由后向...转载 2019-03-21 10:59:21 · 1809 阅读 · 0 评论 -
快速排序之PHP实现【递归】
快速排序的原理找到当前数组中的任意一个元素(一般选择第一个元素)作为标准,新建两个空数组,遍历整个数组元素,如果遍历到的元素比当前的元素要小,那么就放到左边的数组,否则放到右面的数组,然后再对新数组进行同样的操作,不难发现,这里符合递归的原理,所以我们可以用递归来实现。使用递归,则需要找到递归点和递归出口; 递归点:如果数组的元素大于1,就需要再进行分解,所以我们的递归点就是新构造的数组...转载 2019-03-21 10:12:30 · 232 阅读 · 0 评论