当前位置: 首页 > wzjs >正文

网站的ico怎么做爱站网seo培训

网站的ico怎么做,爱站网seo培训,西安做百度网站的,甘肃兰州旅游攻略每日算法 - 250422 1561. 你可以获得的最大硬币数目 题目 思路 贪心 解题过程 根据题意,我们想要获得最大的硬币数目。每次选择时,有三堆硬币:最大的一堆会被 Alice 拿走,最小的一堆会被 Bob 拿走,剩下的一堆&#xf…

每日算法 - 250422


1561. 你可以获得的最大硬币数目

题目

Problem 1561

思路

贪心

解题过程

根据题意,我们想要获得最大的硬币数目。每次选择时,有三堆硬币:最大的一堆会被 Alice 拿走,最小的一堆会被 Bob 拿走,剩下的一堆(也就是第二大的)归我们。

为了最大化我们获得的硬币数,我们应该确保在每次选择中,我们拿到的都是当前可选的三堆里第二大的那一堆。同时,为了让这个第二大的尽可能大,我们应该让 Bob 拿走的那一堆尽可能小。

基于这个贪心策略,我们可以:

  1. 将所有硬币堆 piles 从小到大排序。
  2. 排序后,最大的硬币堆在数组末尾,最小的在数组开头。
  3. 模拟选择过程:
    • Alice 总是拿走当前剩下的最大堆(数组末尾)。
    • 我们总是拿走当前剩下的第二大堆(数组次末尾)。
    • Bob 总是拿走当前剩下的最小堆(数组开头)。
  4. 我们可以用三个指针(或索引)来模拟这个过程。或者更简单地,考虑排序后的数组 piles
    • piles[n-1] 归 Alice。
    • piles[n-2] 归我们。
    • piles[0] 归 Bob。
    • 下一轮:piles[n-3] 归 Alice,piles[n-4] 归我们,piles[1] 归 Bob。
    • 以此类推,我们总是获得索引为 n-2, n-4, n-6, ... 的硬币堆,直到我们选了 n/3 堆为止。

具体的实现可以用一个循环:让我们的指针 jn-2 开始,每次 j -= 2;让 Bob 的指针 k0 开始,每次 k++。循环条件是 j > k,确保我们的索引大于 Bob 的索引,表示还有足够的堆可供分配。

复杂度

  • 时间复杂度: O(N log N)

    主要开销在于对 piles 数组进行排序。遍历过程是 O(N)。

  • 空间复杂度: O(log N) or O(N)

    取决于排序算法使用的额外空间。如果只考虑我们自己使用的额外空间,可以认为是 O(1)。

Code

class Solution {public int maxCoins(int[] piles) {// 对硬币堆进行排序Arrays.sort(piles);int n = piles.length;int sum = 0;for (int j = n - 2, k = 0; k < n / 3; j -= 2, k++) {sum += piles[j];}return sum;}
}

3462. 提取至多 K 个元素的最大总和

题目

Problem 3462

思路

贪心

解题过程

题目要求从二维网格 grid 中提取最多 k 个元素,使得它们的总和最大。有一个限制条件:对于第 igrid[i],最多只能提取 limits[i] 个元素。

贪心策略是显而易见的:我们应该优先选择整个网格中数值最大的那些元素,但同时要遵守每行的提取数量限制。

实现步骤:

  1. 遍历 grid 的每一行 i
  2. 对于当前行 grid[i],找到其中数值最大的 limits[i] 个元素(如果该行元素不足 limits[i] 个,则取所有元素)。可以通过排序当前行,然后选取最大的 limits[i] 个来实现。
  3. 将从所有行中选出的这些“候选”元素收集到一个列表或数组(例如 nums)中。
  4. 对收集到的所有候选元素 nums 进行排序。
  5. 从排序后的 nums 中选取最大的 k 个元素(如果 nums 中的元素总数少于 k,则取所有元素)。
  6. 计算这 k 个(或更少)元素之和,即为最大总和。

注意:总和可能很大,需要使用 long 类型存储。

复杂度

  • 时间复杂度: O(R * C log C + T log T)
    1. 遍历每一行并排序:R 行,每行排序需要 O(C log C)。总计 O(R * C log C)。
    2. 收集元素:将 T 个元素放入 nums 数组,耗时 O(T)。
    3. nums 数组排序:数组大小为 T,排序需要 O(T log T)。
    4. 求和:取前 k 个元素求和,需要 O(k) 或 O(T) 时间。
      整体复杂度由行排序和最终排序决定。
  • 空间复杂度: O(T) or O(R * C)

    主要需要一个数组 nums 来存储所有选出的候选元素,其大小最多为 R * C

Code

class Solution {private int len = 0;public long maxSum(int[][] grid, int[] limits, int k) {int n = grid.length, m = grid[0].length;int size = n * m;int[] nums = new int[size];for (int i = 0; i < grid.length; i++) {getMaxValue(grid[i], nums, limits[i]);}Arrays.sort(nums);long sum = 0;while (k != 0) {sum += nums[size - 1];size--;k--;}return sum;}private void getMaxValue(int[] arr, int[] nums, int limit) {Arrays.sort(arr);for (int i = arr.length - 1; i >= 0 && limit > 0; i--) {nums[len++] = arr[i];limit--;}}
}

2226. 每个小孩最多能分到多少糖果(复习)

题目

Problem 2226

这是第二次写这道题了,写的还不错,就是在处理可以获得的糖果数时没有处理数据可能溢出的问题。
详情请见 每日算法-250410

Code

class Solution {public int maximumCandies(int[] candies, long k) {int left = 1, right = 10000001;while (left <= right) {int mid = left + (right - left) / 2;if (check(candies, mid, k)) {// 够分left = mid + 1;} else {right = mid - 1;}}return right;}private boolean check(int[] arr, int num, long k) {long sum = 0;for (int x : arr) {sum += x / num;}return sum >= k;}
}
http://www.dtcms.com/wzjs/217330.html

相关文章:

  • 西安做网站哪家便宜百度搜索风云榜总榜
  • 可以做试卷并批改的网站品牌推广策略分析
  • 福建建设厅网站 资质营业推广策划方案
  • ASPJSP动态网站开发企业门户网站模板
  • 化妆品 营销型网站腾讯网qq网站
  • 网站建设情况调查表seo是哪个英文的缩写
  • 专业嵌入式软件开发杭州网站关键词排名优化
  • 网页设计外文文献优化公司排名
  • 公司网站用个人备案可以短视频剪辑培训班速成
  • 怎么写网站建设与运营电商seo引流
  • 怎么用ip做网站武汉seo群
  • 蚌埠网站建设哪家好中国广告公司前十强
  • 网站建设工作厦门seo排名扣费
  • 做设计兼职的网站百度网址大全网站
  • 网站设计用什么软件做的台州做优化
  • 做网站犯法外贸营销策略都有哪些
  • 客服网站制作湘潭网站seo
  • wordpress熊掌号专业版企业站seo外包
  • 公司网站用哪个软件做百度服务中心人工客服电话
  • 2022营业执照年审合肥网站seo费用
  • seo查询站长搜索引擎营销的简称
  • 临沂网站建设 百度优化宁波好的seo外包公司
  • 手机网站开发目的114网址大全
  • 如何注销网站备案负责人巩义网络推广
  • 东莞企业网站电话广州各区正在进一步优化以下措施
  • 公司被其它人拿来做网站公司网站制作流程
  • 东莞室内设计公司排名苏州首页关键词优化
  • 网站如何做长沙网站排名推广
  • 新区网站建设seo怎么优化
  • 网站建设推广新闻发稿平台