首页 > 其他分享 >第371场周赛

第371场周赛

时间:2023-11-12 11:35:34浏览次数:28  
标签:周赛 nums value times access dict 371 强数

至少在态度上有进步 昨天参加了 今天也参加了

 

 跟昨晚的类似 第一题和第四题都是一样的 但是plus版要求时间复杂度

给你一个下标从 0 开始的整数数组 nums 。如果一对整数 x 和 y 满足以下条件,则称其为 强数对 :

  • |x - y| <= min(x, y)

你需要从 nums 中选出两个整数,且满足:这两个整数可以形成一个强数对,并且它们的按位异或(XOR)值是在该数组所有强数对中的 最大值 。

返回数组 nums 所有可能的强数对中的 最大 异或值。

注意,你可以选择同一个整数两次来形成一个强数对。

 

示例 1:

输入:nums = [1,2,3,4,5]
输出:7
解释:数组 nums 中有 11 个强数对:(1, 1), (1, 2), (2, 2), (2, 3), (2, 4), (3, 3), (3, 4), (3, 5), (4, 4), (4, 5) 和 (5, 5) 。
这些强数对中的最大异或值是 3 XOR 4 = 7 。
class Solution(object):
    def maximumStrongPairXor(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        l = len(nums)
        ans = 0
        for i in range(l-1):
            for j in range(i+1,l):
                if abs(nums[i]-nums[j])<=min(nums[i],nums[j]):
                    ans = max(ans,nums[i]^nums[j])
        return ans
                

4分钟过

--------------------------------------第二题----------------------------------

给你一个长度为 n 、下标从 0 开始的二维字符串数组 access_times 。对于每个 i0 <= i <= n - 1 ),access_times[i][0] 表示某位员工的姓名,access_times[i][1] 表示该员工的访问时间。access_times 中的所有条目都发生在同一天内。

访问时间用 四位 数字表示, 符合 24 小时制 ,例如 "0800" 或 "2250" 。

如果员工在 同一小时内 访问系统 三次或更多 ,则称其为 高访问 员工。

时间间隔正好相差一小时的时间 不 被视为同一小时内。例如,"0815" 和 "0915" 不属于同一小时内。

一天开始和结束时的访问时间不被计算为同一小时内。例如,"0005" 和 "2350" 不属于同一小时内。

以列表形式,按任意顺序,返回所有 高访问 员工的姓名。

 

示例 1:

输入:access_times = [["a","0549"],["b","0457"],["a","0532"],["a","0621"],["b","0540"]]
输出:["a"]
解释:"a" 在时间段 [05:32, 06:31] 内有三条访问记录,时间分别为 05:32 、05:49 和 06:21 。
但是 "b" 的访问记录只有两条。
因此,答案是 ["a"] 。

class Solution(object):
    def findHighAccessEmployees(self, access_times):
        """
        :type access_times: List[List[str]]
        :rtype: List[str]
        """
        ans = list()
        access_dict = {}  
        for item in access_times:  
            key, value = item  
            if key in access_dict:  
                access_dict[key].append(value)  
            else:  
                access_dict[key] = [value]  
        for key, value_list in access_dict.items():  
            n = len(value_list)
            count = 0
            if n<3:
                continue
            else:
                value_list.sort()
                for indx in range(0,n-2):
                    start_time=value_list[indx]
                    if int(value_list[indx+1])-int(start_time)<100 and int(value_list[indx+2])-int(start_time)<100:
                        ans.append(key)
                        continue


        return list(set(ans))

先根据人分类 每个人的时间再排序

然后再一次判断每个人的

滑动窗口的思想

前几次没考虑到 0010 0040 0120 0130 这种 

        for key, value_list in access_dict.items():  
            n = len(value_list)
            count = 0
            if n<3:
                continue
            else:
                value_list.sort()
                start_time = value_list[0]
                for i in range(1,n):
                    if int(value_list[i])-int(start_time)<100:
                        count=count+1
                        if(count==2):
                            ans.append(key)
                            continue
                    else:
                        count = 0
                        start_time=value_list[i]

 

判断到0120 超过0010的一小时之后 就把起点设置到0120去了 事实上以0040为起点是满足条件的

于是直接 三位三位 这样判断

 

错了五次 耽误了一些时间 但是有几次是相同的代码提交 因为没记住错误的地方 批评

标签:周赛,nums,value,times,access,dict,371,强数
From: https://www.cnblogs.com/LYoungH/p/17826901.html

相关文章

  • 第117场双周赛-3min签到题,然后做不了一点
     给你两个正整数 n 和 limit 。请你将 n 颗糖果分给 3 位小朋友,确保没有任何小朋友得到超过 limit 颗糖果,请你返回满足此条件下的 总方案数 。 示例1:输入:n=5,limit=2输出:3解释:总共有3种方法分配5颗糖果,且每位小朋友的糖果数不超过2:(1,2,2),(2......
  • Acwing.第128场周赛
    Acwing.第128场周赛比赛地址A长方体题目思路:知道长方体的体积计算公式即可,就是一个比较简单的模拟代码:#include<bits/stdc++.h>usingnamespacestd;voidsolve(){ inta,b,c; cin>>a>>b>>c; cout<<a*b*c<<endl; return; }intmain(){ intt=1; while(t--){ ......
  • 第 365 场周赛 (依赖树, 环形滑动窗口,内向基环树)
    本题可以发现一些枚举的技巧,在枚举多个值的时候,自己有时候脑袋晕晕的,会把变量的更新顺序搞混,此时,可以用依赖树来解决。如同本题:classSolution:defmaximumTripletValue(self,nums:List[int])->int:res=pre_max=pre_dif=0forxinnums:......
  • 【蓝桥杯】1024 第 2 场算法双周赛(1~5)
    【蓝桥杯】1024第2场算法双周赛新生【算法赛】-蓝桥云课(lanqiao.cn)#include<iostream>usingnamespacestd;intmain(){printf("15");return0;}铺地板【算法赛】-蓝桥云课(lanqiao.cn)只要面积乘积是\(6\)的倍数即可,特判一下宽和高#include<bits/s......
  • 第 369 场周赛(简单位运算,分类讨论,dfs,树形dp)
     简单位运算模拟classSolution{public:intfindKOr(vector<int>&nums,intk){vector<int>bit(32,0);for(inti=0;i<31;i++){intcnt=0;for(autox:nums){if(x>>......
  • Acwing127周赛第三题 构造矩阵 (套路)
    题目链接:构造矩阵题目描述我们希望构造一个n×m的整数矩阵。构造出的矩阵需满足:每一行上的所有元素之积均等于k。每一列上的所有元素之积均等于k。保证k为1或−1。请你计算,一共可以构成出多少种不同的满足条件的矩阵。由于结果可能很大,你只需要输出对109+7......
  • 第 116 场双周赛(双指针,背包问题,线段树+lz标记)
     本题为双指针和贪心。当我们遇到奇数个0或1时,直接将下一位改变即可。classSolution{public:intminChanges(strings){intn=s.size();intres=0;intl=0,r=-1;while(r++<n-1){if(s[l]==s[r])......
  • 第 116 场双周赛
    不知道为什么今天晚上脑子里想的全是递归  说实话四道题看了都不是很有思路也不是没有思路吧而是知道怎么做但是感觉写不出来而且莫名其妙想的全是递归的解法可能是因为浏览量最高的那篇文章也是递归22:43-23:10差不多30min写了两道题 第一题(22:58AC)100094. 子数......
  • Acwing.第126场周赛
    Acwing.第126场周赛比赛链接之前忘记整理上传了,不能有遗留问题A.蜗牛爬井蜗牛在n米深的井底往上爬,每天清晨到傍晚向上爬5米,夜间又滑下来4米,请问像这样从某天清晨开始,第几天爬到井口?输入格式一个正整数n。输出格式一个整数,表示爬到井口的天数。思路:就是一个比较简答......
  • 2023级HAUT新生周赛题解汇总
    2023级HAUT新生周赛(零)熟悉周赛规则专场:2023级HAUT新生周赛(一)@21级学长专场(张子豪,张鑫,李昊阳):2023级HAUT新生周赛(二)@曹瑞峰专场:2023级HAUT新生周赛(三)@22级学姐专场(杨焱,刘振歌,周欣滢):2023级HAUT新生周赛(四)@牛浩然专场:2023级HAUT新生周赛(五)@陈兰锴专场:......