
算法
Mush1
这个作者很懒,什么都没留下…
展开
-
算法 整数拆分
func integerBreak(n int) int { // 定义dp[i]的含义为,将i切分成2到2个以上的正数,取大乘积 dp := make([]int,n+1) // 因为1无法切分,所以初始化dp[2]即可 dp[2] = 1 // i可以看做为 i-j 与 j 的和,所以结果可以有这两种情况 // (i-j)*j 代表i切为两个整数 // dp[i-j]*j 代表i切为三个或三个以上整数(因为dp[i-j]代表i-j切为两个或两个以上原创 2022-05-04 17:50:34 · 362 阅读 · 0 评论 -
算法 01背包问题
package bagProblemimport "fmt"func BagProblem1(weight, value []int, bagweight int) int { // 定义一个dp[i][j],表示将任意0-i物品放入包后,在包j重量时,包中的价值最大 // 初始化dp都为0 dp := make([][]int, len(weight)) for i := 0; i < len(weight); i++ { // 这里为bagweight+1,表示重量从0开始到b原创 2022-05-04 17:48:30 · 271 阅读 · 0 评论 -
算法 二叉树最大深度
给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回它的最大深度 3来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximum-depth...原创 2020-03-27 20:29:07 · 573 阅读 · 0 评论 -
算法 删除排序链表中的重复元素
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/remove-duplicates-from-sor...原创 2020-03-27 16:39:44 · 135 阅读 · 0 评论 -
算法 爬梯子(斐波那契函数)
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。思路:台阶n1234n-2n-1n方法1235f(n-2)f(n-1)f(n)要到达n阶台阶,必须从n-2阶跨两步,或者n-1阶跨一步所以,n阶的方法f(n)可以为f(n-2)+f(n-1)...原创 2020-03-27 15:04:29 · 488 阅读 · 0 评论 -
算法 求最大子序列(分治法,贪心算法)
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解来源:力扣(LeetCode)链接:https://leetcode-cn...原创 2020-03-26 16:44:08 · 967 阅读 · 0 评论 -
算法 外观数列
「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。前五项如下:1112112111112211 被读作 “one 1” (“一个一”) , 即 11。11 被读作 “two 1s” (“两个一”), 即 21。21 被读作 “one 2”, “one 1” (“一个二” , “一个一”) , 即 1211。给...原创 2020-03-25 23:41:07 · 179 阅读 · 0 评论 -
算法 搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 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], 0输出: 0来源:力扣(Le...原创 2020-03-25 21:41:35 · 148 阅读 · 0 评论 -
算法 实现 strStr() 函数
实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = “hello”, needle = “ll”输出: 2示例 2:输入: haystack = “aaaaa”, needle = “bba...原创 2020-03-25 20:52:48 · 154 阅读 · 0 评论 -
算法 合并两个有序链表
递归算法真是太酷了 function mergeTwoLists($l1, $l2) { if ($l1 == null) { return $l2; } else if ($l2 == null) { return $l1; } else if ($l1->val < $l2->...原创 2020-03-25 17:07:52 · 113 阅读 · 0 评论 -
算法 有效的括号
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false示例 4:输入: “([)...原创 2020-03-25 15:47:59 · 282 阅读 · 0 评论 -
算法 约瑟夫环
$arr = [1, 2, 3, 4, 5];$count = 2;function circle($arr, $count){ $counter = 1; while (1) { if (count($arr) === 1) return $arr; if ($counter !== $count) { array_...原创 2020-03-25 14:53:51 · 125 阅读 · 0 评论 -
算法 最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。方案一(暴力算法,每个字符串的每一位依次比较)function longestCommonPrefix($strs){ $first = array_shift($strs); $str = ''; for ($i = 0; $i < strlen($first); $i...原创 2020-03-24 22:11:19 · 151 阅读 · 0 评论 -
算法 排序
冒泡排序$arr = [10,1,35,61,89,36,55];// 比较次数为n!function maopao($arr) { $site = count($arr); for($j=$site;$j>0;$j--) { for($i=0;$i+1<$j;$i++) { if($arr[$i] > $arr[$i+1]) { $k = $a...原创 2020-03-24 20:31:20 · 95 阅读 · 0 评论 -
算法 罗马数字转整数
方案一(先计算other里字符的数据,再计算单个字符的数据) function romanToInt($s) { $array = ['I' => 1, 'V' => 5, 'X' => 10, 'L' => 50, 'C' => 100, 'D' => 500, 'M' => 1000]; $other...原创 2020-03-24 20:29:47 · 191 阅读 · 0 评论