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

golang/java每日3题

题目1:

​​3033. 修改矩阵​​

给你一个下标从 0 开始、大小为 ​​m x n​​​ 的整数矩阵 ​​matrix​​ ,新建一个下标从 0 开始、名为 ​​answer​​​ 的矩阵。使 ​​answer​​​ 与 ​​matrix​​​ 相等,接着将其中每个值为 ​​-1​​ 的元素替换为所在列的 最大 元素。

返回矩阵 ​​answer​​ 。

示例 1:

输入:matrix = [[1,2,-1],[4,-1,6],[7,8,9]]
输出:[[1,2,9],[4,8,6],[7,8,9]]
解释:上图显示了发生替换的元素(蓝色区域)。
- 将单元格 [1][1] 中的值替换为列 1 中的最大值 8 。
- 将单元格 [0][2] 中的值替换为列 2 中的最大值 9 。

示例 2:

输入:matrix = [[3,-1],[5,2]]
输出:[[3,2],[5,2]]
解释:上图显示了发生替换的元素(蓝色区域)。

提示:

  • ​m == matrix.length​
  • ​n == matrix[i].length​
  • ​2 <= m, n <= 50​
  • ​-1 <= matrix[i][j] <= 100​
  • 测试用例中生成的输入满足每列至少包含一个非负整数。

题解:

使用列遍历,先扫一遍找到每一列的最大值,再扫一遍把 −1 替换成这一列的最大值即可

go代码:

func modifiedMatrix(matrix [][]int) [][]int {n := len(matrix)m := len(matrix[0])for j :=0;j<m; j++ {maxColumn := getMaxColumn(matrix, j, n)for i :=0;i<n;i++ {if(matrix[i][j] == -1) {matrix[i][j] = maxColumn}}}return matrix
}func getMaxColumn(matrix [][]int, j, n int) int {zd := matrix[0][j]for i:=0;i<n;i++ {zd = max(zd, matrix[i][j])}return zd
}

java代码:

class Solution {public int[][] modifiedMatrix(int[][] matrix) {int n = matrix.length;int m = matrix[0].length;for(int j=0; j<m;j++) {int columnMax = getColumnMax(matrix, j, n);for(int i=0;i<n;i++) {if(matrix[i][j]==-1) {matrix[i][j] = columnMax;}}}return matrix;}public int getColumnMax(int[][] matrix, int j, int n) {int max = matrix[0][j];for(int i=0;i<n;i++) {max = Math.max(max, matrix[i][j]);}return max;}
}

题目2:

​​3046. 分割数组​​

给你一个长度为 偶数 的整数数组 ​​nums​​​ 。你需要将这个数组分割成 ​​nums1​​​ 和 ​​nums2​​ 两部分,要求:

  • ​nums1.length == nums2.length == nums.length / 2​​ 。
  • ​nums1​​ 应包含 互不相同 的元素。
  • ​nums2​​也应包含 互不相同 的元素。

如果能够分割数组就返回 ​​true​​ ,否则返回 ​​false​​ 。

示例 1:

输入:nums = [1,1,2,2,3,4]
输出:true
解释:分割 nums 的可行方案之一是 nums1 = [1,2,3] 和 nums2 = [1,2,4] 。

示例 2:

输入:nums = [1,1,1,1]
输出:false
解释:分割 nums 的唯一可行方案是 nums1 = [1,1] 和 nums2 = [1,1] 。但 nums1 和 nums2 都不是由互不相同的元素构成。因此,返回 false 。

提示:

  • ​1 <= nums.length <= 100​
  • ​nums.length % 2 == 0​
  • ​1 <= nums[i] <= 100​

题解:

go代码:

func isPossibleToSplit(nums []int) bool {count := make(map[int]int)for i :=0; i<len(nums); i++ {count[nums[i]]++if(count[nums[i]]>2) {return false}}return true
}

java代码:


// 方法1:先排序,然后看有没有2个以上相等的元素
// class Solution {
//     public boolean isPossibleToSplit(int[] nums) {
//         if(nums.length<=2) {
//             return true;
//         }
//         Arrays.sort(nums);
//         for(int i=2; i<nums.length; i++) {
//             if(nums[i] == nums[i-2]) {
//                 return false;
//             }
//         }
//         return true;
//     }
// }// 方法2:用哈希表统计每个元素的出现次数,看有没有2个以上相等的元素
class Solution {public boolean isPossibleToSplit(int[] nums) {Map<Integer, Integer> count = new HashMap<>();for (int num : nums) {count.put(num, count.getOrDefault(num, 0) + 1);if (count.get(num) > 2) {return false;}}return true;}
}

题目3:

​​3074. 重新分装苹果​​

给你一个长度为 ​​n​​​ 的数组 ​​apple​​​ 和另一个长度为 ​​m​​​ 的数组 ​​capacity​​ 。

一共有 ​​n​​ 个包裹,其中第 ​​i​​ 个包裹中装着 ​​apple[i]​​ 个苹果。同时,还有 ​​m​​ 个箱子,第 ​​i​​ 个箱子的容量为 ​​capacity[i]​​ 个苹果。

请你选择一些箱子来将这 ​​n​​ 个包裹中的苹果重新分装到箱子中,返回你需要选择的箱子的 最小 数量。

注意,同一个包裹中的苹果可以分装到不同的箱子中。

示例 1:

输入:apple = [1,3,2], capacity = [4,3,1,5,2]
输出:2
解释:使用容量为 4 和 5 的箱子。
总容量大于或等于苹果的总数,所以可以完成重新分装。

示例 2:

输入:apple = [5,5,5], capacity = [2,4,2,7]
输出:4
解释:需要使用所有箱子。

提示:

  • ​1 <= n == apple.length <= 50​
  • ​1 <= m == capacity.length <= 50​
  • ​1 <= apple[i], capacity[i] <= 50​
  • 输入数据保证可以将包裹中的苹果重新分装到箱子中。

题解:

先计算苹果总数,然后按照容量从大到小选择箱子装苹果,直到所有苹果均装入箱子为止。注意题目保证可以将包裹中的苹果重新分装到箱子中。

go代码:

func minimumBoxes(apple []int, capacity []int) int {totalApple := getTotalApple(apple)sort.Ints(capacity)boxNum := 0for i:= len(capacity)-1; i>=0; i-- {if(totalApple>0) {totalApple -= capacity[i]boxNum++}if totalApple<=0 {return boxNum}}return boxNum}func getTotalApple(apple []int) int {s := 0for i :=0; i<len(apple); i++ {s += apple[i]}return s
}

java代码:

class Solution {public int minimumBoxes(int[] apple, int[] capacity) {int totalApple = getTotalApple(apple);Arrays.sort(capacity);int boxNum = 0;int i= capacity.length-1;while(totalApple>0) {totalApple -= capacity[i--];boxNum++;}return boxNum;}public int getTotalApple(int[] apple) {int n = 0;for(int i=0; i<apple.length; i++) {n+=apple[i];}return n;}
}
http://www.dtcms.com/a/511612.html

相关文章:

  • 智能数字毫秒表的应用场景介绍,数字毫秒仪 智能毫秒表
  • 【设计模式】工厂模式(Factory)
  • 峰峰专业做网站珠海集团网站建设
  • vue实现打印PDF文档
  • 使用 Python 将 PDF 转成 Excel:高效数据提取的自动化之道
  • 神经网络初次学习收获
  • clickhouse学习笔记(一)基础概念与架构
  • 做网站的业务分析wordpress 国外免费主题
  • [人工智能-大模型-34]:模型层技术 - 通俗易懂的语言阐述Transformer架构
  • 推广你公司网站wordpress静态路由
  • 2017年下半年试题三:论无服务器架构及其应用
  • 内置线程池的核心参数分析配置
  • vim及其模式的操作
  • ESP32学习笔记(基于IDF):SmartConfig一键配网
  • 黑马商城day4-微服务02
  • 哪些网站可以找到做海报的素材浙江建设厅考试成绩查询
  • Python定时爬取新闻网站头条:从零到一的自动化实践
  • 纯CSS实现多种背景图案:渐变条纹、蓝图网格、波点与棋盘效果全解析(附 Sass Mixin 封装)
  • Linux相关概念和易错知识点(48)(epoll的底层原理、epoll的工作模式、反应堆模式)
  • 植物网站设计方案如何查网站是哪家公司做的
  • Vue 2 响应式系统常见问题与解决方案(包含_demo以下划线开头命名的变量导致响应式丢失问题)
  • [人工智能-大模型-33]:模型层技术 - 大模型的神经网络架构
  • MySQL 从库延迟 10 小时——磁盘静默错误引发的惨案
  • 【go语言】gopls工具与LSP协议全面解析
  • 网站页面设计怎么做东莞软件开发培训机构
  • 《算法每日一题(1)--- 第31场蓝桥算法挑战赛》
  • 低代码开发平台有哪些:数字化深水区的核心基建与品牌全景
  • 二元 LDPC码的Tanner图表示方法
  • 基于大数据的股票推荐系统 协同过滤推荐算法 数据分析可视化 Django框架 金融数据分析(源码+文档)✅
  • diffusion model(0.4.2) 为什么$\nabla_x \log p(x)$指向概率密度更高的区域?