
贪心
ZQQ~BK
这个作者很懒,什么都没留下…
展开
-
K 次取反后最大化的数组和
题目描述:给定一个整数数组 A,我们只能用以下方法修改该数组:我们选择某个个索引 i 并将 A[i] 替换为 -A[i],然后总共重复这个过程 K 次。(我们可以多次选择同一个索引 i。)以这种方式修改数组后,返回数组可能的最大和。思路分析:1.先将数组进行排序,然后判断小于0的数是否大于K,如果大于,只需要将前K个最小的负数反转即可2.如果小于K,则需要判断反转后剩下K的次数是奇数还是偶数,如果是偶数,肯定是可以通过重叠反转将负数转化为整数3.如果数奇数,只要将反转后的所有正数里面最小的一个变原创 2020-05-22 21:20:56 · 328 阅读 · 0 评论 -
分发饼干
题目描述:假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,都有一个尺寸 sj 。如果 sj >= gi ,我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。思路分析:给一个孩子的饼干应当尽量小并且又能满足该孩子,这样大饼干才能拿来给满足度比较大的孩子。因为满足度最小的孩子最容易得到满足,所原创 2020-05-22 20:59:49 · 104 阅读 · 0 评论 -
柠檬水找零
题目描述:在柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。注意,一开始你手头没有任何零钱。如果你能给每位顾客正确找零,返回 true ,否则返回 false 。class Solution { public boolean lemonadeChange(int[] bills) {原创 2020-05-22 20:46:07 · 153 阅读 · 0 评论 -
买卖股票的最佳时机 II
题目描述:给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。思路分析:1.单独交易:如果明天价格比今天高,则卖出可收益,则进行交易2.连续上涨交易日:相当于每天都有买卖3.连续下降交易日: 则不买卖收益最大,即不会亏钱。class Solution { public int maxProfit(int[] pri原创 2020-05-22 20:09:55 · 149 阅读 · 0 评论 -
两地调度
题目描述:公司计划面试 2N 人。第 i 人飞往 A 市的费用为 costs[i][0],飞往 B 市的费用为 costs[i][1]。返回将每个人都飞到某座城市的最低费用,要求每个城市都有 N 人抵达。思路分析:假设都去B市,然后选择一半的人去A市,选择去A市的人需要是costs[i][0]-costs[i][1]最小的,这样总数是最小的class Solution { public int twoCitySchedCost(int[][] costs) { Arrays.原创 2020-05-22 19:30:32 · 421 阅读 · 0 评论 -
分割平衡字符串
题目描述:在一个「平衡字符串」中,‘L’ 和 ‘R’ 字符的数量是相同的。给出一个平衡字符串 s,请你将它分割成尽可能多的平衡字符串。返回可以通过分割得到的平衡字符串的最大数量。思路分析:局部求最优解,用flag标志是否可以分割成一个平衡字符串,count是平衡字符串的数量class Solution { public int balancedStringSplit(String s) { if(s==null){ return 0;原创 2020-05-22 17:40:52 · 122 阅读 · 0 评论