LeetCode:第57场双周赛记录

LeetCode:第57场双周赛记录

  • 1941.检查是否所有字符出现次数相同
    • 题目描述
    • 解法
  • 1942. 最小未被占据椅子的编号
    • 题目描述
    • 解法
  • 1943. 描述绘画结果
    • 题目描述
    • 解法
  • 1944. 队列中可以看到的人数
    • 题目描述
    • 解题思路

LeetCode:第57场双周赛记录_第1张图片

1941.检查是否所有字符出现次数相同

题目描述

给你一个字符串s,如果s是一个字符串,请你返回true,否则请返回false
如果s中出现过的所有字符的出现次数相同,那么我们称字符串s字符串。
提示:

  • 1 <= s.length <= 1000
  • s只包含小写英文字母。

解法

用一个Tab数组记录每个字符出现的次数,随后遍历数组,判断是否出现次数相同即可。
力扣第一题一般都是送分题。。。

class Solution {
   
    public boolean areOccurrencesEqual(String s) {
   
    	int[] Tab = new int[26];
    	
    	for(int i=0;i<s.length();i++) {
   
    		Tab[s.charAt(i)-'a']++;
    	}
    	int cont = 0;
    	for(int i=0;i<26;i++) {
   
    		if(cont!=0) {
   
    			if(Tab[i]!=0&&cont!=Tab[i])
    				return false;
    		}else {
   
        		if(Tab[i]!=0)
        			cont=Tab[i];
    		}
    	}
    	return true;
    }
}

1942. 最小未被占据椅子的编号

题目描述

n个朋友在举办一个派对,这些朋友从0n - 1编号。派对里有无数张椅子,编号为0infinity。当一个朋友到达派对时,他会占据编号最小且未被占据的椅子。

  • 比方说,当一个朋友到达时,如果椅子 0 ,1 和 5 被占据了,那么他会占据 2 号椅子。

当一个朋友离开派对时,他的椅子会立刻变成未占据状态。如果同一时刻有另一个朋友到达,可以立即占据这张椅子。

给你一个下标从 0 开始的二维整数数组times,其中 times[i] = [arrival_i, leaving_i]表示第i个朋友到达和离开的时刻,同时给你一个整数targetFriend。所有到达时间互不相同
请你返回编号为targetFriend的朋友占据的 椅子编号 。
提示

  • n == times.length
  • 2 <= n <= 10^4
  • times[i].length == 2
  • 1 <= arrival_i < leaving_i <=10^5
  • 0 <= targetFriend <= n - 1
    每个 a r r i v a l i arrival_i arrivali时刻互不相同

解法

竞赛时做这题卡了很久,最后我的思路和别人的也不太一样。
我是用3个哈希表:
hashA:保存到达时间和朋友编号< a r r i v e i , i arrive_i,i arrivei,i>
hashE:保存离去时间和朋友编号< l e a v i n g i , i leaving_i,i leavingi,i>
hashChair:保存朋友编号和椅子编号< i i i,椅子编号>
一个优先队列:
chair:保存剩下的椅子
然后根据时间遍历for(int i=0;i<10^5)模拟占椅子

你可能感兴趣的:(java,算法)