首页 > 其他分享 >数组能形成多少数对

数组能形成多少数对

时间:2023-05-26 19:33:15浏览次数:45  
标签:少数 nums int 数对 形成 result 数组 移除

给你一个下标从 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 个数字。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/maximum-number-of-pairs-in-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

class Solution {
    public int[] numberOfPairs(int[] nums) {
        int[] result = new int[2];
        //排除特殊情况
        if(nums.length==1){
            result[0] = 0;
            result[1] = 1;
            return result;
        }
        //排序数组
        Arrays.sort(nums);
        int i=0,j=1;
        int count = 0;
        //统计有多少数对
        while(j<nums.length){
            if(nums[i]==nums[j]){
                count++;
                i=j+1;
                j=i+1;
            }else{
                i++;
                j++;
            }

        }
        //剩余数字等于nums长度-数对的两倍
        result[0] = count;
        result[1] = nums.length - count * 2;
        return result;
    }
}

标签:少数,nums,int,数对,形成,result,数组,移除
From: https://www.cnblogs.com/xiaochaofang/p/17435640.html

相关文章

  • vue3 后台返回数据没有返回字段是true和false 值的时候,循环数组,点击单个元素单个元素
    最原始的写法<template><div><divv-for="(item,index)initems":key="item.id":class="{active:item.active}"@click="handleClick(item)">{{item.text}}div>div>但是不是所有的后端都会返回字段的值是true和false ......
  • 函数传递二维数组方法
    二维数组这样定义的时候:intx[n][m]感觉就不再是一个真正意义上的数组了,因为没有办法通过头指针进行访问,传递的时候编译器报错没有这个函数,直接找不到了。一种新的定义方式int**x=newint*[n];for(inti=0;i<n;++i)x[i]=newint[m];这样的话,就按定义一维数组的方......
  • MyBatis传入参数为数组、list的写法
    <updateid="disableUsers">UPDATEt_userSETdisable_flag=#{disable}WHERE1=1<iftest="userIds!=nullanduserIds.size>0">ANDidIN<foreachcollection="item"item=&......
  • Javascript 指南:数组
    数组数组是JavaScript的有序列表,可以存储任何数据类型,包括字符串、数字和布尔值。数组中的每个项目都位于一个编号位置。句法数组由方括号和里面的内容表示。数组中的元素应该用逗号分隔。让colors=["red","blue","green","yellow"];访问和更新元素要访问或更改数组中......
  • Java 实践(Netbeans开发)——StringTokenizer实现数组分割
     引:StringTokenizer存在于java.util. StringTokenizer包中,是一个用来分隔String的应用类,相当于VB的split函数。1.构造函数publicStringTokenizer(Stringstr)publicStringTokenizer(Stringstr,Stringdelim)publicStringTokenizer(Stringstr,Stringdelim,boolean......
  • 树状数组学习总结
    今天本初中生蒟蒻学习了一下\(\color{red}{树状数组}\),总结一下~~~树状数组的实现功能简介快速求前缀和(\(\color{purple}{O(log_2n)}\))修改某一个数(\(\color{green}{O(log_2n)}\))树状数组图示树状数组其实就是如图所建立的~~~下面引入一个函数——lowbitlowbit(x)是x......
  • 将一个数组逆序输出
    将一个数组逆序输出。#include<stdio.h>#defineN10intmain(){inta[N]={0,1,2,3,4,5,6,7,8,9};inti,t;printf("原数据为:\n");for(i=0;i<N;i++){printf("%d",a[i]);}for(i=0;i<N/2;i++){t=a[i];a[i]=a[......
  • GET请求如何传递数组参数
    方式一可以将数组参数传递多次,springmvc会将多个同名参数自动封装成数组或者集合对象,示例如下: #请求URLhttp://127.0.0.1:8080/getUsers?name=张三&name=李四#后台接口代码@RestController@RequestMapping("/")publicclassSpringMvcController{@RequestMapping(v......
  • C语言中的溢出(数组越界)
    在C陷阱与缺陷中有一样例如下:#include<stdio.h>intmain(){inti,a[10];for(i=1;i<=10;++i)a[i]=0;return0;}由于数组a只有10个元素,它们分在在a[0],a[1],...,a[9],该程序非法使用了a[10],结果导致的是该程序成了死循环。原因:编译该代......
  • java removeAll 返回2个数组的差集
    注意:removeAll不是差集importjava.util.ArrayList;publicclassImoocStudent{publicstaticvoidmain(Stringargs[]){ArrayList<String>objArray=newArrayList<String>();ArrayList<String>objArray2=newArrayList......