算法
文章平均质量分 56
听者vae
这个作者很懒,什么都没留下…
展开
-
prim:1584.连接所有点的最小费用
题目描述:给你一个points数组,表示 2D 平面上的一些点,其中points[i] = [xi, yi]。连接点[xi, yi] 和点[xj, yj]的费用为它们之间的 曼哈顿距离:|xi - xj| + |yi - yj|,其中|val|表示val的绝对值。请你返回将所有点连接的最小总费用。只有任意两点之间 有且仅有一条简单路径时,才认为所有点都已连接。示例 1:输入:points = [[0,0],[2,2],[3,10],[5,2],[7,0...原创 2022-01-19 13:49:48 · 298 阅读 · 0 评论 -
贪心算法:1005.K次取反后最大化的数组和
题目描述:给你一个整数数组 nums 和一个整数 k ,按以下方法修改该数组:选择某个下标 i并将 nums[i] 替换为 -nums[i] 。重复这个过程恰好 k 次。可以多次选择同一个下标 i 。以这种方式修改数组后,返回数组 可能的最大和 。示例 1:输入:nums = [4,2,3], k = 1输出:5解释:选择下标 1 ,nums 变为 [4,-2,3] 。示例 2:输入:nums = [3,-1,0,2], k = 3输出:6解释:选择下标 (1, 2,.原创 2022-01-17 13:43:23 · 338 阅读 · 0 评论 -
贪心算法:860.柠檬水找零
题目描述:在柠檬水摊上,每一杯柠檬水的售价为5美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。注意,一开始你手头没有任何零钱。给你一个整数数组 bills ,其中 bills[i] 是第 i 位顾客付的账。如果你能给每位顾客正确找零,返回true,否则返回 false。示例 1:输入:bills = [5,...原创 2022-01-17 11:49:41 · 252 阅读 · 0 评论 -
KMP算法:28.实现strStr()
题目描述:实现 strStr() 函数。给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。说明:当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与 C 语言的 strstr() 以及 Java 的 indexOf() 定义相符。示例 1:输入:hayst原创 2022-01-15 19:13:14 · 122 阅读 · 0 评论 -
动态规划:746.使用最小花费爬楼梯
题目描述:给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。请你计算并返回达到楼梯顶部的最低花费。示例1:输入:cost = [10,15,20]输出:15解释:你将从下标为 1 的台阶开始。- 支付 15 ,向上爬两个台阶,到达楼梯顶部。总花费为 15 。示例2:输入:cost = [1,100,1,1,1,100,1,转载 2022-01-14 21:20:13 · 201 阅读 · 0 评论 -
动态规划:746.使用最小花费爬楼梯
题目描述:给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。请你计算并返回达到楼梯顶部的最低花费。示例1:输入:cost = [10,15,20]输出:15解释:你将从下标为 1 的台阶开始。- 支付 15 ,向上爬两个台阶,到达楼梯顶部。总花费为 15 。示例2:输入:cost = [1,100,1,1,1,100,1,转载 2022-01-14 21:06:45 · 122 阅读 · 0 评论 -
动态规划:70.爬楼梯
题目描述:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 阶 + 2 阶3. 2 阶 + 1 阶思路:爬到第一层楼梯有一种方法,爬到二层楼梯有两转载 2022-01-14 18:42:37 · 155 阅读 · 0 评论 -
动态规划:509.斐波那契数
题目描述:斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0,F(1) = 1F(n) = F(n - 1) + F(n - 2),其中 n > 1给你 n ,请计算 F(n) 。示例1:输入:2输出:1解释:F(2) = F(1) + F(0) = 1 + 0 = 1示例2:输入:3输出:2解释:F(3) = F(2) + F(1) = 1 + 1转载 2022-01-14 17:00:07 · 142 阅读 · 0 评论 -
动态规划:最大子数组和
题目描述:给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组 是数组中的一个连续部分。示例1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。示例2:输入:nums = [1]输出:1示例3:输入:nums = [5,4,-1,7,8]输出:23思路:假设 nums 数组的长度是 nn,下标从 0到 n−1.转载 2022-01-12 22:06:03 · 177 阅读 · 0 评论 -
分治算法:最大子数组和
题目描述:给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组 是数组中的一个连续部分。示例1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。示例2:输入:nums = [1]输出:1示例3:输入:nums = [5,4,-1,7,8]输出:23思路:这个分治方法类似于「线段树求解最长公共上升子序列问题」的 pu转载 2022-01-11 21:11:57 · 670 阅读 · 0 评论 -
二分法:二分查找
题目描述:给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。示例1:输入: nums= [-1,0,3,5,9,12], target= 9输出: 4解释: 9 出现在 nums中并且下标为 4示例2:输入: nums= [-1,0,3,5,9,12], target= 2输出: -1解释: 2 不存在 nums中因此返回 -1思路:使用非递归的二分查找原创 2022-01-11 18:34:22 · 407 阅读 · 0 评论