​力扣解法汇总2341. 数组能形成多少数对

news/2024/7/5 7:07:09

 目录链接:

力扣编程题-解法汇总_分享+记录-CSDN博客

GitHub同步刷题项目:

https://github.com/September26/java-algorithms

原题链接:力扣


描述:

给你一个下标从 0 开始的整数数组 nums 。在一步操作中,你可以执行以下步骤:

  • 从 nums 选出 两个 相等的 整数
  • 从 nums 中移除这两个整数,形成一个 数对

请你在 nums 上多次执行此操作直到无法继续执行。

返回一个下标从 0 开始、长度为 2 的整数数组 answer 作为答案,其中 answer[0] 是形成的数对数目,answer[1] 是对 nums 尽可能执行上述操作后剩下的整数数目。

示例 1:

输入:nums = [1,3,2,1,3,2,2]
输出:[3,1]
解释:
nums[0] 和 nums[3] 形成一个数对,并从 nums 中移除,nums = [3,2,3,2,2] 。
nums[0] 和 nums[2] 形成一个数对,并从 nums 中移除,nums = [2,2,2] 。
nums[0] 和 nums[1] 形成一个数对,并从 nums 中移除,nums = [2] 。
无法形成更多数对。总共形成 3 个数对,nums 中剩下 1 个数字。

示例 2:

输入:nums = [1,1]
输出:[1,0]
解释:nums[0] 和 nums[1] 形成一个数对,并从 nums 中移除,nums = [] 。
无法形成更多数对。总共形成 1 个数对,nums 中剩下 0 个数字。

示例 3:

输入:nums = [0]
输出:[0,1]
解释:无法形成数对,nums 中剩下 1 个数字。

提示:

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

解题思路:

* 解题思路:
* 求每个数字的出现数量,最后遍历数量,
* num/2代表出现对的数量,
* num%2代表有余数的情况。
 

代码:

public class Solution2341 {

    public int[] numberOfPairs(int[] nums) {
        Map<Integer, Integer> map = new HashMap<>();
        for (int i : nums) {
            Integer num = map.getOrDefault(i, 0);
            map.put(i, num + 1);
        }
        int i1 = 0;
        int i2 = 0;
        for (int num : map.values()) {
            i1 += num / 2;
            i2 += num % 2;
        }
        return new int[]{i1, i2};
    }
}


http://lihuaxi.xjx100.cn/news/896354.html

相关文章

快速实现Modbus TCP转BACnet IP协议的方案

一、需求背景 BACnet是用于智能楼宇自控系统的主流通信协议&#xff0c;可用在暖通空调系统&#xff08;HVAC&#xff0c;包括暖气、通风、空气调节&#xff09;&#xff0c;也可以用在照明控制、门禁系统、火警侦测系统及其相关的设备。楼宇中的受控设备都通过BACnet协议连接到…

Nginx配置HTTP强制跳转到HTTPS

https 访问我们的测试域名 https://www.xxx.com 站点&#xff0c;但是当我们直接在浏览器地址栏中直接输入 www.xxx.com 的时候却发现进入的是 http 协议的网站&#xff0c;这与我们的初衷不一致。由于浏览器默认访问域名使用的是80端口&#xff0c;而当我们使用SSL证书后&…

redis主从哨兵模式

一.为什么用redis主从模式 1.数据备份:主从复制实现数据的热备份。 2.故障恢复:当主节点出现问题时,由从节点提供服务,实现快速恢复。 3.负载均衡:读写分离,主节点提供写服务,从节点提供读服务。在写少读多时提高Redis的并发。 二.为什么使用哨兵模式 主要用于主节…

如何将vue2项目重构成vue3《后台管理系统》

文章目录前言一、基础配置总结前言 首先我们要知道vue3是基于vue2基础上更改了一些改变但改变不大&#xff0c;基本上把vue2的后台管理系统复制过来对项目进行改写就行 一、基础配置 说起登录页面。所谓登录就是要有一个参照物 你输入账号或者密码达到参照物的标准 就会执行下…

P5461 赦免战俘 (递归/分治)

链接 思路&#xff1a; 对于每一个小方阵&#xff0c;分别操作(取该方阵的左上角&#xff0c;把这部分设置成为已经赦免). z 1时&#xff0c;递归结束. 参考代码&#xff1a; #include <bits/stdc.h>int main() {std::ios::sync_with_stdio(false);std::cin.tie(nullp…

AcWing语法基础课笔记 第六章 C++中的函数

第六章 C中的函数 函数让代码变得更加简洁。 ——闫学灿 目录 1.函数基础 1.1编写函数 1.2调用函数 1.3形参和实参 1.4函数的形参列表 1.5函数返回类型 1.6局部变量、全局变量与静态变量 2.参数传递 传值参数​编辑 2.2传引用参数 2.3数组形参…

k8s之容器存储接口(CSI)ceph-csi-rbd部署

TOC CSI简介 容器存储接口&#xff08;Container Storage Interface&#xff09;&#xff0c;简称 CSI&#xff0c;CSI 试图建立一个行业标准接口的规范&#xff0c;借助 CSI 容器编排系统&#xff08;CO&#xff09;可以将任意存储系统暴露给自己的容器工作负载。 csi 卷类…

【Vue】基本交互指令

Vue el挂载点 <div id"app">{{message}} </div> <script>var app new Vue({el:"#app",data:{message:"hello"}}) </script>Vue实例的作用范围&#xff1a;管理el选项命中的元素及其内部的后代元素使用其他的选择器&a…