【JavaScript】牛客编程: 为数组 arr 中的每个元素求二次方。不要直接修改数组 arr,结果返回新的数组

本文探讨了在JavaScript中对数组元素进行平方操作的两种不同方法。第一种方法使用传统的for循环,逐一将数组中的每个元素乘以其自身,然后将结果存入新的数组。第二种方法则利用了map函数,它提供了更简洁的语法糖,直接在原数组上应用平方运算,返回一个新的数组。
function square(arr) {
    var arr2 = []
    for(var i=0; i<arr.length; i++) {
        arr2[i] = arr[i]*arr[i]
    }
    return arr2
}
function square(arr) {
    return arr.map(function(elem, index, arr) {
        return elem*elem
    })
}

在这里插入图片描述

要解决该问题,核心思路是遍历数组每个元素 `num` 可能变成的值(`num - 1`、`num`、`num + 1`),统计每个值出现的次数,最后找出出现次数最多的值对应的次数。 以下是 Java 实现代码: ```java import java.util.HashMap; import java.util.Map; public class MaxSameElements { public static int maxSameElements(int[] arr) { // 用于存储每个可能值的出现次数 Map<Integer, Integer> countMap = new HashMap<>(); int maxCount = 0; for (int num : arr) { // 考虑 num - 1, num, num + 1 三种情况 for (int i = -1; i <= 1; i++) { int possibleNum = num + i; // 更新该可能值的出现次数 countMap.put(possibleNum, countMap.getOrDefault(possibleNum, 0) + 1); // 更新最大出现次数 maxCount = Math.max(maxCount, countMap.get(possibleNum)); } } return maxCount; } public static void main(String[] args) { int[] arr = {1, 2, 3, 2}; int result = maxSameElements(arr); System.out.println("最多相同元素的个数: " + result); } } ``` ### 代码解释 1. **创建 `HashMap`**:用于存储每个可能值的出现次数。 2. **遍历数组**:对于数组中的每个元素 `num`,考虑 `num - 1`、`num`、`num + 1` 三种情况。 3. **更新计数**:使用 `getOrDefault` 方法更新每个可能值的出现次数,并更新最大出现次数。 4. **返回结果**:返回最大出现次数。 ### 复杂度分析 - **时间复杂度**:$O(n)$,其中 $n$ 是数组的长度,因为只需要遍历数组一次。 - **空间复杂度**:$O(k)$,其中 $k$ 是可能值的数量,最坏情况下为 $3n$。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值