LeetCode每日一题--2021.11.1

题目:575. 分糖果 -----难度:简单

今天是2021.11.1,今天开始我又重新拾起每日一刷LeetCode的信心啦,最近玩的太多了,害怕找不到工作,那就继续努力吧

先来自己和自己唠唠嗑,唠唠最近的趣事

  • 昨天熬夜看比赛了,EDG半决赛打三星,打满bo5给我赢了,还是蛮开心的,比较我这个老淀粉看EDG的比赛也是有五年了
  • 打球认识了一个学妹,不是特别感冒
  • 本来说下周去看007:无暇赴死,结果今天说封校了,没办法只能不去了
  • 最近玩的有点多了,连续打球打了一周,这一个月我要好好静下心来去继续冲

1.进入正题

题目描述


题目意思大概读懂了,我啪的一下第一反应就是,妹妹获得的糖果数量不可能超过candyType的一半,然后又因为要她获得的糖果种类最多,那我就把所有种类的糖果给她,但是还不能超过一半,不够的用已经给她种类的糖果代替。啪的一下题解就出来。

class Solution {
    public int distributeCandies(int[] candyType) 
    {
    	//妹妹最大能获得的糖果数也只是参数数组的一半,当
    	//设置最大能获得的糖果数量
    	int MAX=candyType.length/2;
    	//安排一个map
    	Map<Integer, Integer>  mp=new HashMap<>();
    	for(Integer x:candyType)
    	{
    		//如果这个种类的糖果存在的话
    		if(mp.containsKey(x)==true) mp.put(x, mp.get(x)+1);
    		else {
				mp.put(x,1);
			}
    	}
    	int Type_N=mp.keySet().size();
    	return (Type_N>MAX? MAX:Type_N);
    }
}

我一看这时间,不合理啊,好慢,我又去学点新做法吧

2.稍微改进

class Solution {
    public int distributeCandies(int[] candyType) 
    {
    	//妹妹最大能获得的糖果数也只是参数数组的一半,当
    	//设置最大能获得的糖果数量
    	int MAX=candyType.length/2;
    	Set<Integer> st=new HashSet<>();
    	for(Integer x:candyType)
    	{
    		st.add(x);
    	}
    	return (st.size()>MAX? MAX:st.size());
    }
}

我中间的map究其原因都是为了求得无重复元素一个集合(属于是用哈希表用魔怔了),改成set之后快了好多

结果

我直接睡觉

posted @ 2021-11-01 18:06  写不完作业还要玩  阅读(29)  评论(0编辑  收藏  举报