贪心
小马哥MAX
刷题记录BLOG
展开
-
【两次过】Lintcode 41:最大子数组
给定一个整数数组,找到一个具有最大和的子数组,返回其最大和。样例样例1:输入:[−2,2,−3,4,−1,2,1,−5,3]输出:6解释:符合要求的子数组为[4,−1,2,1],其最大和为 6。样例2:输入:[1,2,3,4]输出:10解释:符合要求的子数组为[1,2,3,4],其最大和为 10。挑战要求时间复杂度为O(n)注意事项子数组最少包含...原创 2018-01-27 19:39:50 · 242 阅读 · 0 评论 -
【两次过】Lintcode 187. 加油站
在一条环路上有N个加油站,其中第i个加油站有汽油gas[i],并且从第_i_个加油站前往第_i_+1个加油站需要消耗汽油cost[i]。你有一辆油箱容量无限大的汽车,现在要从某一个加油站出发绕环路一周,一开始油箱为空。求可环绕环路一周时出发的加油站的编号,若不存在环绕一周的方案,则返回-1。样例样例 1:输入:gas[i]=[1,1,3,1],cost[i]=[2,2...原创 2019-07-01 10:59:06 · 185 阅读 · 0 评论 -
【一次过】Lintcode 150. 买卖股票的最佳时机 II
给定一个数组prices表示一支股票每天的价格.你可以完成任意次数的交易, 不过你不能同时参与多个交易 (也就是说, 如果你已经持有这支股票, 在再次购买之前, 你必须先卖掉它).设计一个算法求出最大的利润.样例样例 1:输入: [2, 1, 2, 0, 1]输出: 2解释: 1. 在第 2 天以 1 的价格买入, 然后在第 3 天以 2 的价格卖出, 利润...原创 2019-06-29 10:08:27 · 200 阅读 · 0 评论 -
【两次过】【2019招行】漂流船问题
公司组织团建活动,到某漂流圣地漂流,现有如下情况:员工各自体重不一,第i个人的体重为people[i],每艘漂流船可以承载的最大重量为limit。每艘船最多可同时载两人,但条件是这些人的重量之和最多为limit。为节省开支,麻烦帮忙计算出载到每一个人所需的最小船只数(保证每个人都能被船载)。输入描述:第一行输入参与漂流的人员对应的体重数组,第二行输入漂流船承载的...原创 2019-07-03 20:17:19 · 753 阅读 · 0 评论 -
【两次过】Lintcode 970. 大生意
给出两个数组a,b。a[i]代表第i部影片的版权费,b[i]代表第i部影片能卖的钱,现在本金k,问最后最多能赚多少钱。(每部影片只需要买一次版权,只能卖一次。)样例样例 1:输入:a = [3,1,5], b = [4,3,100], k = 1输出:4解释:先买第2部影片,再卖出,再买第1部影片,再卖出,最后本金变为4。样例 2:输入:a = [3,1,5], b ...原创 2019-02-19 13:18:50 · 115 阅读 · 0 评论 -
【两次过】Lintcode 149. 买卖股票的最佳时机
假设有一个数组,它的第i个元素是一支给定的股票在第i天的价格。如果你最多只允许完成一次交易(例如,一次买卖股票),设计一个算法来找出最大利润。样例给出一个数组样例[3,2,3,1,2], 返回 1解题思路1:贪心算法,顺序扫描股票价格,找到截至当天最低的股票价格MinPrice,最高的利润profit。public class Solution { /** ...原创 2018-10-13 09:54:46 · 165 阅读 · 0 评论 -
【两次过】Lintcode 1242. 无重叠区间
给定一些区间,找到需要移除的最小区间数,以使其余的区间不重叠。样例样例1:输入: [ [1,2], [2,3], [3,4], [1,3] ]输出: 1解释: [1,3] 被移除后,剩下的区间将不再重叠。样例2:输入: [ [1,2], [1,2], [1,2] ]输出: 2解释: 需要将两个 [1,2] 移除使得剩下的区间不重合。样例3:输入...原创 2019-04-08 09:54:55 · 277 阅读 · 0 评论 -
【两次过】1164. 摆动序列
如果连续数字之间的差严格地在正和负之间交替,则这样的数字序列称为摆动序列。 第一个差值(如果存在)可以是正的也可以是负的。 少于两个元素的序列通常是摆动序列。例如,[1,7,4,9,2,5]是一个摆动序列,因为连续数字的差(6,-3,5,-7,3)交替为正和负。 相反,[1,4,7,2,5]和[1,7,4,5,5]不是摆动序列,第一个是因为它的前两个连续数字的差是正的,而第二个是因为它的最后一...原创 2019-04-06 10:54:08 · 280 阅读 · 0 评论 -
【两次过】Lintcode 116. 跳跃游戏
给出一个非负整数数组,你最初定位在数组的第一个位置。 数组中的每个元素代表你在那个位置可以跳跃的最大长度。 判断你是否能到达数组的最后一个位置。样例A =[2,3,1,1,4],返回 true.A =[3,2,1,0,4],返回 false.注意事项这个问题有两个方法,一个是贪心和动态规划。贪心方法时间复杂度为O(N)。动态规划方法的时间复杂度为...原创 2018-10-15 09:20:28 · 141 阅读 · 0 评论 -
【一次过】【2018拼多多】六一儿童节
题目描述六一儿童节,老师带了很多好吃的巧克力到幼儿园。每块巧克力j的重量为w[j],对于每个小朋友i,当他分到的巧克力大小达到h[i] (即w[j]>=h[i]),他才会上去表演节目。老师的目标是将巧克力分发给孩子们,使得最多的小孩上台表演。可以保证每个w[i]> 0且不能将多块巧克力分给一个孩子或将一块分给多个孩子。输入描述:第一行:n,表示h数组元素个数 第二行:n...原创 2019-03-18 09:25:41 · 139 阅读 · 0 评论 -
【一次过】Lintcode 1263. 是子序列吗?
给定字符串s和t,判断s是否为t的子序列。你可以认为在s和t中都只包含小写字母。t可能是一个非常长(length ~= 500,000)的字符串,而s是一个较短的字符串(length <= 100)。一个字符串的子序列是在原字符串中删去一些字符(也可以不删除)后,不改变剩余字符的相对位置形成的新字符串(例如,"ace"是"abcde"的子序列而"aec"不是)。样例样例1:...原创 2018-07-20 09:12:42 · 139 阅读 · 0 评论 -
【一次过】Lintcode 1230. 分饼干
假设你是一个了不起的家长,准备给你的孩子们一些饼干吃,但是你只能给每个孩子至多一块饼干。每一块饼干jj都有一个尺寸s_{j}sj;同时每一个孩子ii都有一个贪吃指数g_{i}gi,代表了能使他满足的最小的饼干尺寸。如果s_{j} \geq g_{i}sj≥gi,那么就可以将饼干jj分给孩子ii使他得到满足。你的目标是使最多的孩子得到满足,输出这个最大值。样例样例1:...原创 2018-07-17 22:13:45 · 200 阅读 · 0 评论