当前位置: 首页 > news >正文

6-周赛332总结

6-周赛332总结

过了Q1和Q2,Q2知道用二分但是边界处理的不是很好,迷迷糊糊过的(手动再移动了下返回值…)

Q3知道将子字符串的值取出来,将最短位置放在哈希表中,然后异或在哈希表中找值。但是我这个猪头脑袋直接将值用Integer.parseInt(s)取值,然后右移取余,移了大半天,很蠢就是了…然后就没有时间做第四题了

继续努力继续努力

下文为自己的题解总结,参考其他题解写成,取其精华,做以笔记,如有描述不清楚或者错误麻烦指正,不胜感激,不喜勿喷!

找出数组的串联值【LC2562】

给你一个下标从 0 开始的整数数组 nums

现定义两个数字的 串联 是由这两个数值串联起来形成的新数字。

  • 例如,1549 的串联是 1549

nums串联值 最初等于 0 。执行下述操作直到 nums 变为空:

  • 如果 nums 中存在不止一个数字,分别选中 nums 中的第一个元素和最后一个元素,将二者串联得到的值加到 nums串联值 上,然后从 nums 中删除第一个和最后一个元素。
  • 如果仅存在一个元素,则将该元素的值加到 nums 的串联值上,然后删除这个元素。

返回执行完所有操作后 nums 的串联值。

  • 思路:使用双指针匹配数组中的元素,并将元素进行串联,累加至结果中,直至数组中没有元素剩余

    • 如果前后指针指向同个元素,直接将值累加至结果
    • 如果前后指针指向两个元素nums1,nums2nums1,nums2nums1,nums2,那么串联值为num1∗nums2的位数+nums2num1*nums2的位数+nums2num1nums2的位数+nums2
  • 实现

    class Solution {public long findTheArrayConcVal(int[] nums) {int l = 0, r = nums.length - 1;long res = 0L;while (l <= r){if (l == r){res += nums[l];break;}else{int n = getN(nums[r]);res += Math.pow(10, n) * nums[l] + nums[r];l++;r--;}}return res;}public int getN(int num){int n = 0;while (num != 0){num /= 10;n++;}return n;}
    }
    
    • 复杂度
      • 时间复杂度:O(n)O(n)O(n)
      • 空间复杂度:O(1)O(1)O(1)

统计公平数对的数目【LC2563】

给你一个下标从 0 开始、长度为 n 的整数数组 nums ,和两个整数 lowerupper ,返回 公平数对的数目

如果 (i, j) 数对满足以下情况,则认为它是一个 公平数对

  • 0 <= i < j < n,且
  • lower <= nums[i] + nums[j] <= upper
  • 思路:二分查找

    将数组按顺序排序后,枚举每一个nums[i],那么在nums[0,i)nums[0,i)nums[0,i)范围内,使用二分查找另一个数小于lower−nums[i]lower-nums[i]lowernums[i]或者小于等于upper−nums[i]upper-nums[i]uppernums[i]的个数,记为leftright,那么符合条件的公平数对为right−leftright-leftrightleft

    • 可以转换为使用二分查找另一个数大于等于lower−nums[i]lower-nums[i]lowernums[i]或者大于upper−nums[i]upper-nums[i]uppernums[i]的第一个数的下标
    • 可以转换为使用二分查找另一个数大于等于lower−nums[i]lower-nums[i]lowernums[i]或者大于等于upper−nums[i]+1upper-nums[i]+1uppernums[i]+1的第一个数的下标
  • 实现

    注意:二分查找指定范围内第一个大于等于target的数的下标,左闭右闭

    class Solution {public long countFairPairs(int[] nums, int lower, int upper) {long res = 0L;Arrays.sort(nums);int n = nums.length;for (int i = 1; i < n; i++){int left = binarySearch(nums, lower - nums[i], i - 1);// 第一个大于等于 lower - nums[i] 的下标int right = binarySearch(nums, upper - nums[i] + 1, i - 1);// 第一个大于等于high nums[i]的下标[0, i - 1] res += right - left;}return res;       }// 返回第一个大于等于target的下标public int binarySearch(int[] nums, int target, int r){int l = 0;// 左闭右闭while (l <= r){int mid = (l + r) >>> 1;if (nums[mid] < target){l = mid + 1;}else{r = mid - 1;}}return l;}
    }
    
    • 复杂度
      • 时间复杂度:O(nlogn)O(nlogn)O(nlogn)
      • 空间复杂度:O(1)O(1)O(1)

子字符串异或查询【LC2564】

给你一个 二进制字符串 s 和一个整数数组 queries ,其中 queries[i] = [firsti, secondi]

对于第 i 个查询,找到 s最短子字符串 ,它对应的 十进制valfirsti 按位异或 得到 secondi ,换言之,val ^ firsti == secondi

i 个查询的答案是子字符串 [lefti, righti] 的两个端点(下标从 0 开始),如果不存在这样的子字符串,则答案为 [-1, -1] 。如果有多个答案,请你选择 lefti 最小的一个。

请你返回一个数组 ans ,其中 ans[i] = [lefti, righti] 是第 i 个查询的答案。

子字符串 是一个字符串中一段连续非空的字符序列。

  • 思路:

    • 首先进行预处理,将二进制字符串所有子字符串对应的十进制整数值存储在哈希表中,哈希表记录该值对应的最短子字符串的起始位置和终止位置
    • 然后遍历循环数组查找结果:根据异或性质,当哈希表中存在值为val = firsti ^ secondi 时,对于第iii个查询可以找到答案,答案即为哈希表的key值
  • 实现

    注意:由于 数值大小109<23010^9<2^{30}109<230,因此,我们可以只需要计算 s 中所有长度不超过 30的子字符串即可

    class Solution {public int[][] substringXorQueries(String s, int[][] queries) {char[] chars = s.toCharArray();int n = s.length();int m = queries.length;int[][] res = new int[m][2];Map<Integer, int[]> map = new HashMap<>();for (int i = 0; i < m; i++){Arrays.fill(res[i], -1);}        for (int l = 0; l < n; l++){int num = 0;for (int r = l; r < Math.min(l + 30, n); r++){num = (num << 1) + chars[r] - '0';if (!map.containsKey(num) || map.get(num)[1] - map.get(num)[0]  > r - l){map.put(num, new int[]{l, r});}}}for (int i = 0; i < m; i++){int target = (queries[i][0] ^ queries[i][1]);if (map.containsKey(target)){res[i] = map.get(target);}}return res;}
    }
    • 复杂度
      • 时间复杂度:O(nlogU+q)O(nlogU + q)O(nlogU+q),其中 nnns 的长度,U=max(queries)U=max(queries)U=max(queries)qqqqueries 的长度。
      • 空间复杂度:O(nlogU)O(nlogU)O(nlogU)

最少得分子序列【LC2565】

给你两个字符串 st

你可以从字符串 t 中删除任意数目的字符。

如果没有从字符串 t 中删除字符,那么得分为 0 ,否则:

  • left 为删除字符中的最小下标。
  • right 为删除字符中的最大下标。

字符串的得分为 right - left + 1

请你返回使 t 成为 s 子序列的最小得分。

一个字符串的 子序列 是从原字符串中删除一些字符后(也可以一个也不删除),剩余字符不改变顺序得到的字符串。(比方说 "ace""***a\***b***c\***d***e\***" 的子序列,但是 "aec" 不是)。

  • 思路:

    • 删除[left,right][left,right][left,right]之间的字符,不会影响最终结果,因为删除不影响得分,并且更能让剩余字符成为s的子串,因此可以视为删除子串【没想到】
    • 删除后,t中剩余的字符为t[:,left),(right,:][:,left),(right,:][:,left),(right,:]。假设s的一个前缀字符串s[0,i]s[0,i]s[0,i]可以匹配该前缀字符串,s的一个后缀字符串s[i+1,:]s[i+1,:]s[i+1,:]可以匹配该后缀字符串,那么表明t中剩余的字符是s的子序列,得分为right−left+1right-left+1rightleft+1
    • 反而言之,我们可以枚举iii,求得s[0,i]s[0,i]s[0,i]能够匹配t的最长前缀字符串的结束位置下标l,以及s[i+1,:]s[i+1,:]s[i+1,:]能够匹配t的最长后缀字符串的开始位置r,那么此时需要删除的位置即为[l+1,r−1][l+1,r-1][l+1,r1],得分为r−l−1r-l-1rl1,取最小值返回节课
  • 实现

    • 预处理后缀数组suff[i]s的一个后缀字符串s[i,:]s[i,:]s[i,:]可以匹配t的最长后缀字符串的开始位置
    • 预处理前缀数组pre[i+1]s的一个前缀字符串s[0,i]s[0,i]s[0,i]可以匹配t的最长前缀字符串的结束位置
    class Solution {public int minimumScore(String s, String t) {int n = s.length(), m = t.length();int[] pre = new int[n + 1];int[] suf = new int[n + 1];suf[n] = m;for (int i = n - 1, j = m - 1; i >= 0; i--){if (j >= 0 && s.charAt(i) == t.charAt(j)) j--;suf[i] = j + 1;}int res = suf[0];if (suf[0] == 0) return res;// t是s的子序列pre[0] = -1;for (int i = 1; i <= n; i++){if (s.charAt(i - 1) == t.charAt(pre[i - 1] + 1)){pre[i] = pre[i - 1] + 1;}else{pre[i] = pre[i - 1];}res = Math.min(res, suf[i] - pre[i] - 1);}return res;}
    }
    
    • 复杂度
      • 时间复杂度:O(n)O(n)O(n)
      • 空间复杂度:O(n)O(n)O(n)
  • 优化:前缀数组可以用变量代替

    class Solution {public int minimumScore(String s, String t) {int n = s.length(), m = t.length();int[] suf = new int[n + 1];suf[n] = m;for (int i = n - 1, j = m - 1; i >= 0; i--){if (j >= 0 && s.charAt(i) == t.charAt(j)) j--;suf[i] = j + 1;}int res = suf[0];if (suf[0] == 0) return res;// t是s的子序列int pre = -1;for (int i = 1; i <= n; i++){if (s.charAt(i - 1) == t.charAt(pre + 1)){pre += + 1;}res = Math.min(res, suf[i] - pre - 1);}return res;}
    }
    

相关文章:

6-周赛332总结

6-周赛332总结 过了Q1和Q2&#xff0c;Q2知道用二分但是边界处理的不是很好&#xff0c;迷迷糊糊过的&#xff08;手动再移动了下返回值…&#xff09; Q3知道将子字符串的值取出来&#xff0c;将最短位置放在哈希表中&#xff0c;然后异或在哈希表中找值。但是我这个猪头脑袋…...

嵌入式Qt 开发一个音乐播放器

上篇文章&#xff1a;RK3568源码编译与交叉编译环境搭建&#xff0c;进行了OK3568开发板软件开发环境搭建&#xff0c;通过编译RK3568的源码&#xff0c;可以得到Qt开发的交叉编译相关工具。 本篇&#xff0c;就来在搭建好的软件开发中&#xff0c;进行Qt软件的开发测试。由于…...

2023秋招万得集团AI算法岗面经分享

本专栏分享 计算机小伙伴秋招春招找工作的面试经验和面试的详情知识点 专栏首页:秋招算法类面经分享 主要分享计算机算法类在面试互联网公司时候一些真实的经验 2022年 11.22下午AI算法岗面试 (1)一面35min 1、自我介绍 2、科研:长文本MRC...

RoI Transformer论文翻译详解

Learning RoI Transformer for Oriented Object Detection in Aerial Images 0.摘要 航空图像中的目标检测是计算机视觉中一个活跃而又具有挑战性的任务&#xff0c;因为它具有鸟瞰视角、高度复杂的背景和变化的物体外观。特别是在航空图像中检测密集的目标时&#xff0c;基于…...

Prometheus 自动发现监控AWS EC2实例

本文章简述对接自动发现AWS云EC2实例 前提环境&#xff1a; PromethuesGrafanaAWS IAM权限 涉及参考文档&#xff1a; AWS EC2Grafana 通用监控模板 一、IAM 用户创建 1、创建Prometheus 策略 策略规则&#xff1a; {"Version": "2012-10-17",&quo…...

从recat源码角度看setState流程

setState setState() 将对组件 state 的更改排入队列批量推迟更新&#xff0c;并通知 React 需要使用更新后的 state 重新渲染此组件及其子组件。其实setState实际上不是异步&#xff0c;只是代码执行顺序不同&#xff0c;有了异步的感觉。 使用方法 setState(stateChange | u…...

【Java|golang】1234. 替换子串得到平衡字符串---双指针

有一个只含有 ‘Q’, ‘W’, ‘E’, ‘R’ 四种字符&#xff0c;且长度为 n 的字符串。 假如在该字符串中&#xff0c;这四个字符都恰好出现 n/4 次&#xff0c;那么它就是一个「平衡字符串」。 给你一个这样的字符串 s&#xff0c;请通过「替换一个子串」的方式&#xff0c;…...

自监督表征学习方法——BYOL(Bootstrap Your Own Latent)

自监督表征学习方法——BYOL(Bootstrap Your Own Latent) 参考文献&#xff1a;《Bootstrap Your Own Latent A New Approach to Self-Supervised Learning》 1.前言背景 学习良好的图像表示是计算机视觉中的一个关键挑战&#xff0c;因为它允许对下游任务进行有效的训练。许…...

均衡负载集群(LBC)-1

均衡负载集群&#xff08;LBC&#xff09; 客户–>通过Internet—>负载调度器—>n台真实服务器 负载调度器&#xff1a; 软件&#xff1a;LVS&#xff1b;Nginx&#xff1b;Haproxy硬件&#xff1a;F5&#xff1b; LVS架构&#xff1a; 使用到C/S&#xff08;B/S…...

WebSocket

关于WebSocket&#xff1a; WebSocket 协议在2008年诞生&#xff0c;2011年成为国际标准。现在所有浏览器都已经支持了。 WebSocket 的最大特点就是&#xff0c;服务器可以主动向客户端推送信息&#xff0c;客户端也可以主动向服务器发送信息&#xff0c;是真正的双向平等对话…...

GA-PEG-GA,Glutaric Acid-PEG-Glutaric Acid,戊二酸-聚乙二醇-戊二酸供应

英文名称&#xff1a;Glutaric Acid-PEG-Glutaric Acid&#xff0c;GA-PEG-GA 中文名称&#xff1a;戊二酸-聚乙二醇-戊二酸 GA-PEG-GA是一种线性双功能PEG羧酸试剂。PEG和羧基COOH之间存在C4酯键。PEG羧酸可用于与氨基反应&#xff0c;与NHS和DCC、EDC等肽偶联试剂反应。 P…...

使用sqlmap + burpsuite sql工具注入拿flag

使用sqlmap burpsuite sql工具注入拿flag 记录一下自己重新开始学习web安全之路③。 目标网站&#xff1a;http://mashang.eicp.vip:1651/7WOY59OBj74nTwKzs3aftsh1MDELK2cG/ 首先判断网站是否存在SQL注入漏洞 1.找交互点 发现只有url这一个交互点&#xff0c;搜索框和登录…...

替代AG9300|替代NCS8823|CS5260 Type-C转VGA视频转换方案

替代AG9300|替代NCS8823|CS5260 Type-C转VGA视频转换方案 CS5260是一款是一款实现USB TYPE-C到VGA视频转换的单片机解决方案转换器。CS5260支持USB Type-C显示端口交替模式&#xff0c;CS5260可以将视频和音频流从USB Type-C接口传输到VGA端口。在CS5260芯片中&#xff0c;显示…...

乐鑫特权隔离机制的 OTA 固件升级

固件空中升级 (OTA, Over-The-Air) 是任何联网设备的重要功能之一&#xff0c;支持开发人员通过远程更新固件&#xff0c;以发布新功能或修复错误。乐鑫特权隔离框架中包含两类应用程序&#xff1a;受保护的应用程序 (protected_app) 和用户应用程序 (user_app) &#xff0c;这…...

C++数据结构 —— 二叉搜索树

目录 1.二叉搜索树的基本概念 1.1二叉搜索树的基本特征 2.二叉搜索树的实现 2.1数据的插入(迭代实现) 2.2数据的搜索(迭代实现) 2.3中序遍历(递归实现) 2.4数据的删除(迭代实现) 2.5数据的搜索(递归实现) 2.6数据的插入(递归实现) 2.7数据的删除(递归实现) 2.8类的完…...

Maven面试题及答案

1、Maven有哪些优点和缺点 优点&#xff1a; 1、简化项目依赖管理 2、方便与持续集成工具(Jenkins)整合 3、有助于多模块项目开发&#xff0c;比如一个模块开发好后发布到仓库&#xff0c;依赖该模块时可以直接从远程仓库更新&#xff0c;不用自己手动去编译 4、有很多插件&am…...

WebRTC系列-Qos系列之接收放RTX处理

文章目录 1. RTX详解1.1 RTX包头解析1.2 RTX包中的OSN2. RTX在WebRTC中处理2.1 组包2.2 解包2.3 发送及接收处理流程2.3.1 发送流程2.3.2 rtx标记的设置流程2.3.3 解析流程2.3.4 RTX解包在上一篇 WebRTC系列-Qos系列之接收NACK文章中分析了接收到nack后解析的主要流程。在WebR…...

国内能否炒伦敦金,2023国际十大正规伦敦金交易平台排名

在目前的投资市场环境中&#xff0c;现货黄金是一种屡见不鲜的投资选择&#xff0c;它依靠国际化的投资环境&#xff0c;成为了世界范围内投资者的重要选择对象。进行现货黄金投资&#xff0c;人们除了要认识市场发展基本现状之外&#xff0c;更要做好基本面和技术面分析工作&a…...

react路由 - react-router-dom

react路由 现代的前端应用大多都是 SPA&#xff08;单页应用程序&#xff09;&#xff0c;也就是只有一个 HTML 页面的应用程序。因为它的用户体验更好、对服务器的压力更小&#xff0c;所以更受欢迎。为了有效的使用单个页面来管理原来多页面的功能&#xff0c;前端路由应运而…...

01-RTOS

对于裸机而言&#xff0c;对于RTOS而言即&#xff1a;对于裸机&#xff0c;打游戏意味着不能回消息 回消息意味着不能打游戏对于RTOS 打游戏和裸机的切换只需要一个时间片节拍 1ms 从宏观来看 就是同时进行的两件事&#xff08;但要在这两件事情的优先级一样的情况下&#xff0…...

为什么你需要SRWE?5个轻松掌握Windows窗口管理的实用技巧

为什么你需要SRWE&#xff1f;5个轻松掌握Windows窗口管理的实用技巧 【免费下载链接】SRWE Simple Runtime Window Editor 项目地址: https://gitcode.com/gh_mirrors/sr/SRWE 你是否曾经为Windows窗口管理而烦恼&#xff1f;想要截图却受限于屏幕分辨率&#xff0c;需…...

Google 2026 AI全家桶升级:企业管理员必须在48小时内完成的3项策略校准与2项合规备案

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Google 2026 AI全家桶升级全景图 2026年&#xff0c;Google正式发布新一代AI基础设施矩阵——“Project Aether”&#xff0c;标志着其AI全家桶从模块化协同迈向原生融合时代。核心升级聚焦于模型、工具…...

天气图片分类模型:基于迁移学习与GPU资源优化

天气图片分类模型:基于迁移学习与GPU资源优化 1. 引言 天气识别在自动驾驶、户外监控、气象服务等领域具有重要应用价值。传统方法依赖于手工设计的特征(如纹理、颜色直方图),鲁棒性不足。深度学习尤其是卷积神经网络(CNN)能够自动从图像中学习层次化特征,显著提升分类…...

对比直接使用厂商API,Taotoken在路由容灾上的体验差异

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 对比直接使用厂商API&#xff0c;Taotoken在路由容灾上的体验差异 1. 引言&#xff1a;服务稳定性的现实挑战 在将大模型能力集成…...

A Survey for Image Quality Assessment: From Handcrafted Features to Deep Learning

1. 图像质量评估的起源与核心挑战 当你用手机拍完一张照片&#xff0c;系统自动弹出"画质优化建议"时&#xff0c;背后就是图像质量评估&#xff08;IQA&#xff09;技术在发挥作用。这项技术最早可以追溯到上世纪70年代电视信号传输质量检测&#xff0c;当时工程师们…...

Claude Code与Cursor CLI集成:AI辅助编程工作流优化实践

1. 项目概述&#xff1a;Claude Code与Cursor CLI的桥梁如果你和我一样&#xff0c;日常开发中同时使用Claude Code和Cursor&#xff0c;并且对Composer 2的执行速度印象深刻&#xff0c;那么你很可能也面临过这样的困境&#xff1a;Claude Code在规划、分析和代码审查方面表现…...

手把手教你用Makerbase VESC遥控你的电机:从硬件连接到APP配置的保姆级避坑指南

Makerbase VESC遥控电机全流程实战&#xff1a;从硬件对接到信号调优的深度指南 第一次拿到Makerbase VESC套件时&#xff0c;看着密密麻麻的接口和参数选项确实让人头皮发麻。作为过来人&#xff0c;我完全理解那种既兴奋又忐忑的心情——兴奋在于终于可以亲手打造自己的智能…...

如何快速提取B站视频素材:新手必备的DownKyi音画分离指南

如何快速提取B站视频素材&#xff1a;新手必备的DownKyi音画分离指南 【免费下载链接】downkyi 哔哩下载姬downkyi&#xff0c;哔哩哔哩网站视频下载工具&#xff0c;支持批量下载&#xff0c;支持8K、HDR、杜比视界&#xff0c;提供工具箱&#xff08;音视频提取、去水印等&am…...

基于RAG与向量检索的本地化智能搜索问答系统部署指南

1. 项目概述与核心价值最近在折腾一个挺有意思的开源项目&#xff0c;叫moneykick/openclaw-anspire-search_pro。光看这个名字&#xff0c;可能有点摸不着头脑&#xff0c;但如果你对信息检索、智能问答或者企业知识库构建感兴趣&#xff0c;那这个项目绝对值得你花时间研究一…...

MTKClient实用指南:三步解锁联发科设备的终极解决方案

MTKClient实用指南&#xff1a;三步解锁联发科设备的终极解决方案 【免费下载链接】mtkclient MTK reverse engineering and flash tool 项目地址: https://gitcode.com/gh_mirrors/mt/mtkclient MTKClient是一款专为联发科芯片设备设计的开源逆向工程与刷机工具&#x…...