LeetCode:第57场双周赛记录

请添加图片描述

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)模拟占椅子的情况,当目标编号占椅子时返回编号。

class Solution {
   
    public int smallestChair(int[][] times, int targetFriend) {
   
    	HashMap<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值