
Leetcode每日随机2021/4/26
发布日期:2021-05-07 13:49:59
浏览次数:11
分类:精选文章
本文共 1555 字,大约阅读时间需要 5 分钟。
题目:
在解决这个问题时,我首先想到的是如何通过最优的方式来最大化数组中元素的和。面对这个问题,我决定采用小根堆(最小堆)的方法来实现。思路:
对于第一个问题,我使用了一个优先队列(最小堆)来解决。每次取出最小的元素,并将其从总和中减去,同时将其值变为正数并重新插入队列中。这种方法确保了每次操作都能最大化总和的增长。通过这种方式,我能够在K次操作后得到最优解。对于第二个问题,我最初尝试用贪心算法来解决,但后来发现这种方法并不适用于所有情况。因此,我转而使用了深度优先搜索(DFS)结合暴力搜索的方法,虽然这种方法的时间复杂度较高,但由于数据量较小,最终仍能满足要求。
代码:
代码如下:public int largestSumAfterKNegations(int[] A, int K) { PriorityQueuequeue = new PriorityQueue<>(); int sum = 0; for (int a : A) { sum += a; queue.offer(a); } for (int i = 0; i < K; i++) { int head = queue.poll(); sum -= 2 * head; queue.offer(-head); } return sum;}
public boolean canDistribute(int[] nums, int[] quantity) { Mapmap = new HashMap<>(); for (int num : nums) { map.put(num, map.getOrDefault(num, 0) + 1); } List count = new ArrayList<>(map.values()); Arrays.sort(quantity); return dfs(count, quantity, quantity.length - 1);}private boolean dfs(List count, int[] quantity, int idx) { if (idx < 0) { return true; } int max = 0; for (int i : count) { max = i > max ? i : max; } if (quantity[idx] > max) { return false; } for (int i = 0; i < count.size(); i++) { if (count.get(i) < quantity[idx]) { continue; } count.set(i, count.get(i) - quantity[idx]); if (dfs(count, quantity, idx - 1)) { return true; } count.set(i, count.get(i) + quantity[idx]); } return false;}
通过以上方法,我成功地解决了这两个问题,并得到了满意的结果。
发表评论
最新留言
很好
[***.229.124.182]2025年03月26日 11时37分41秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
轮播图——旋转木马(Jquery)
2019-03-04
普通平衡树板子
2019-03-04
操作DOM(二):删除节点、、复制节点、替换节点
2019-03-04
vue(7):表单输入绑定
2019-03-04
JSP内置对象:操作cookie、session对象
2019-03-04
【数算-27】多路查找树【了解】
2019-03-04
【数算-31】【十大常用算法-03】动态规划算法与背包问题
2019-03-04
【SE-02】多线程-02
2019-03-04
$set的使用(视图不能实时更新)
2019-03-04
Spring知识小汇(6)——Bean的自动装配
2019-03-04
一、硬件防火墙
2019-03-04
Javaweb jQuery功能练习
2019-03-04
余生,愿你能靠近那些正能量的人——
2019-03-04
初学QT
2019-03-04
IOC容器_Bean管理xml方式
2019-03-04
蓝桥杯入门练习题斐波那契数列
2019-03-04
(Java基础类库 )System类
2019-03-04
context:include-filter与exclude-filte控制扫描组件
2019-03-04
【SSL】1072砝码称重
2019-03-04