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

珠海网站推广公司网站竞价托管

珠海网站推广公司,网站竞价托管,xml是用来做网站的嘛,做建材商城网站题目 给你两个下标从 0 开始的整数数组 nums1 和 nums2 ,两者长度都是 n ,再给你一个正整数 k 。你必须从 nums1 中选一个长度为 k 的 子序列 对应的下标。 对于选择的下标 i0 ,i1 ,…, ik - 1 ,你的 分数 …

题目

给你两个下标从 0 开始的整数数组 nums1 和 nums2 ,两者长度都是 n ,再给你一个正整数 k 。你必须从 nums1 中选一个长度为 k 的 子序列 对应的下标。
对于选择的下标 i0 ,i1 ,…, ik - 1 ,你的 分数 定义如下:
nums1 中下标对应元素求和,乘以 nums2 中下标对应元素的 最小值 。
用公式表示: (nums1[i0] + nums1[i1] +…+ nums1[ik - 1]) * min(nums2[i0] , nums2[i1], … ,nums2[ik - 1]) 。
请你返回 最大 可能的分数。
一个数组的 子序列 下标是集合 {0, 1, …, n-1} 中删除若干元素得到的剩余集合,也可以不删除任何元素。

一、代码实现(贪心+优先队列)

import ("container/heap""sort"
)func maxScore(nums1 []int, nums2 []int, k int) int64 {n := len(nums1)pairs := make([][]int, n)for i := 0; i < n; i++ {pairs[i] = []int{nums2[i], nums1[i]}}sort.Slice(pairs, func(i, j int) bool {return pairs[i][0] > pairs[j][0]})h := &minHeap{}heap.Init(h)total := 0maxScore := 0for _, pair := range pairs {num2, num1 := pair[0], pair[1]heap.Push(h, num1)total += num1if h.Len() > k {total -= heap.Pop(h).(int)}if h.Len() == k {current := total * num2if current > maxScore {maxScore = current}}}return int64(maxScore)
}type minHeap []intfunc (h minHeap) Len() int            { return len(h) }
func (h minHeap) Less(i, j int) bool  { return h[i] < h[j] }
func (h minHeap) Swap(i, j int)       { h[i], h[j] = h[j], h[i] }
func (h *minHeap) Push(x interface{}) { *h = append(*h, x.(int)) }
func (h *minHeap) Pop() interface{} {old := *hn := len(old)x := old[n-1]*h = old[:n-1]return x
}

二、算法分析

1. 核心思路
  • 排序策略:将元素按nums2的值降序排列,确保每次处理当前可能的子序列最小值。
  • 贪心选择:维护一个最小堆,动态保留当前最大的knums1值。
  • 实时计算:当堆满k个元素时,立即计算当前可能的最大分数。
2. 关键步骤
  1. 数据预处理

    • nums1nums2的元素配对并按nums2降序排列。
  2. 堆维护过程

    • 使用最小堆动态维护最大的knums1值。
    • 每当堆元素超过k时,弹出最小值以保持堆大小。
  3. 分数计算

    • 每次堆满k个元素时,计算当前和与当前nums2最小值的乘积,更新最大分数。
3. 复杂度
指标说明
时间复杂度O(n log n)排序主导时间复杂度
空间复杂度O(n)存储排序后的元素对

三、图解示例

在这里插入图片描述

四、边界条件与扩展

1. 特殊场景验证
  • 全相同元素:当所有nums2值相同时,正确选取最大的knums1值。
  • k等于数组长度:此时必须全选,分数为总和乘以最小值。
  • 大数值测试:验证算法在极大数值时的正确性。
2. 扩展应用
  • 动态k值调整:支持k值根据条件变化时快速重新计算。
  • 多维约束:增加其他维度的限制条件进行筛选。
  • 分布式计算:处理超大规模数据时分布式排序和堆维护。
3. 多语言实现
import java.util.*;public class Solution {public int maxScore(int[] nums1, int[] nums2, int k) {int n = nums1.length;int[][] pairs = new int[n][2];for (int i = 0; i < n; i++) {pairs[i][0] = nums2[i];pairs[i][1] = nums1[i];}Arrays.sort(pairs, (a, b) -> b[0] - a[0]);PriorityQueue<Integer> heap = new PriorityQueue<>();long total = 0;long maxScore = 0;for (int[] pair : pairs) {int num2 = pair[0];int num1 = pair[1];heap.offer(num1);total += num1;if (heap.size() > k) {total -= heap.poll();}if (heap.size() == k) {maxScore = Math.max(maxScore, total * num2);}}return (int) maxScore;}
}
import heapqdef maxScore(nums1, nums2, k):# 将nums2和nums1的元素配对,并按nums2的值降序排列pairs = sorted(zip(nums2, nums1), key=lambda x: -x[0])heap = []total = 0max_score = 0for num2, num1 in pairs:# 将当前nums1的值加入堆heapq.heappush(heap, num1)total += num1# 如果堆的大小超过k,弹出最小的元素if len(heap) > k:removed = heapq.heappop(heap)total -= removed# 当堆中恰好有k个元素时,计算当前分数if len(heap) == k:current_score = total * num2if current_score > max_score:max_score = current_scorereturn max_score

五、总结与优化

1. 算法对比
方法优势适用场景
贪心+优先队列时间效率高需要动态维护最大值
暴力枚举实现简单小规模数据
动态规划可处理复杂约束需要状态转移的情况
2. 工程优化
  • 内存优化:在原数组上操作减少内存消耗。
  • 并行排序:使用多线程加速大规模数据排序。
  • 剪枝策略:提前终止不可能产生更优解的分支。
3. 扩展方向
  • 在线处理:支持数据流动态添加元素。
  • 多目标优化:同时考虑多个目标函数的最优解。
  • 近似算法:针对超大数据设计近似解法。
http://www.dtcms.com/wzjs/544268.html

相关文章:

  • 招商网站搭建费用怎样制作网站
  • 网站字体效果网站建设谁家好
  • 网站建设 招标任务书网站开发需要哪些人员
  • 山西网站建设服务公司北京专业企业网站建设
  • 网站建设投标书免费2级a做爰片免费网站
  • 网站建设需要参考哪些文献动漫制作专业认识
  • 公司网站建设价格贵吗做宠物服务的相关网站
  • 免费下载网站软件网站开发调用别人网站的组件
  • 花生壳软件做的网站专业制作标书
  • 长春网站制作最新招聘信息wordpress模板不显示文章页
  • 荧光字网站网站建设为什么需要备案
  • 怎么为自己做的网站申请域名电子商务网站建设的方法及流程图
  • 网页游戏网站源码jquery在网站开发实例运用
  • 外贸网站公司黑龙江新闻最新消息今天
  • 沙坪坝网站开发如何加强企业网站建设 论文6
  • 安徽外贸网站建设owl WordPress
  • wordpress 极致优化seo是什么工作
  • google移动网站建站十大原则wordpress nginx 502
  • 内蒙古建设住房与城乡厅官方网站找别人做网站注意事项
  • 赣州企业做网站网站建设的开票编码
  • 网页设计与制作课件张松炎六安网站优化
  • 在哪下载免费的英文版网站模板苏州宣传册设计广告公司
  • 网站费用构成网页制作工具按其制作方式
  • 百度网站建设及推广北京网站建设开发专业公司
  • 湖北seo整站优化机加工自动报价系统软件
  • 二次开发小程序东莞网站seo方法
  • 旅游网站建设的背景广东网站建设seo优化制作设计
  • 预约网站怎么做以图搜图百度识图
  • 金泉网做网站要找谁离线发布wordpress
  • 网站如何提高排名用ps设计网页页面