请选择 进入手机版 | 继续访问电脑版

LeeCode每日一题-简单篇

[复制链接]
云韵 发表于 2020-12-31 18:09:23 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
LeeCode逐日一题-简单篇

逐日一道算法题,一起学习一起进步,我会从简单题开始一步一步积极!
2020年12月30日–第二题

来自Leecode-1207-独一无二的出现次数
题目如下:
  给你一个整数数组 arr,请你资助统计数组中每个数的出现次数。
如果每个数的出现次数都是独一无二的,就返回 true;否则返回 false。
示例1:
  输入:arr = [1,2,2,1,1,3]
输出:true
解释:在该数组中,1 出现了 3 次,2 出现了 2 次,3 只出现了 1 次。没有两个数的出现次数相同。
示例2:
  输入:arr = [1,2]
输出:false
示例3:
  输入:arr = [-3,0,1,-3,1,1,1,-3,10,0]
输出:true
思路解析:
1.不存在次数相同的数,我首先想到了使用Set来储存出现的次数。
2.最开始想到的就是使用Map以及Set来举行遍历。反面想到对数据先举行排序,再举行遍历,判定数组的下一个值是不是即是当前值,如果不即是则添加当前值的个数到Set中。
3.需单独处理处罚最后一个数组值。
代码以及思路如下:
  1. class Solution {  public boolean uniqueOccurrences(int[] arr) {    Arrays.sort(arr);    //用来装出现的次数    Set set = new HashSet();    //当前元素出现的次数    int flag = 1;    boolean temp;    for (int i = 0; i < arr.length-1; i++) {        //判定下一个数是否即是当前数        if(arr[i+1] != arr[i]){          temp = set.add(flag);          //如果当前数的个数已存在,则返回false          if(!temp){            return false;          }          flag = 1;          continue;        }                flag++;    }    //如果最后两个数不相等,则向set中放一个1    if(arr[arr.length-2]!= arr[arr.length-1] && set.contains(1)){      return false;    }        return true;  }}
复制代码
来源:https://blog.csdn.net/qq_42448037/article/details/111998801
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )