【刷题笔记】第四天

SYSU-MM01数据集评估避坑指南:从RGB/IR图像理解到Python评估脚本调优 本文详细解析了SYSU-MM01数据集在跨模态行人重识别(ReID)评估中的关键技巧与常见陷阱。从RGB/IR图像理解到Python评估脚本优化,提供了数据评估模式选择、single-shot/multi-shot差异分析、特征文件处理规范等实用指南,帮助研究者避开指标异常问题,提升评估效率与准确性。 阅读详情

2924. 找到冠军 II

题目描述

一场比赛中共有 n 支队伍,按从 0 到 n - 1 编号。每支队伍也是 有向无环图(DAG) 上的一个节点。

给你一个整数 n 和一个下标从 0 开始、长度为 m 的二维整数数组 edges 表示这个有向无环图,其中 edges[i] = [ui, vi] 表示图中存在一条从 ui 队到 vi 队的有向边。

从 a 队到 b 队的有向边意味着 a 队比 b 队 强 ,也就是 b 队比 a 队 弱 。

在这场比赛中,如果不存在某支强于 a 队的队伍,则认为 a 队将会是 冠军 。

如果这场比赛存在 唯一 一个冠军,则返回将会成为冠军的队伍。否则,返回 -1 。

思路分析

思路1:

对于u->v这条边,v肯定不是冠军

所以我们遍历所有的边,将那些v标记上,然后判断1到n的每一个节点,如果该节点为标记,则该节点可能为冠军。

注意:冠军只能有一个,如果有多个节点未被标记,说明找不到冠军,就返回-1。

class Solution {
    public int findChampion(int n, int[][] edges) {
        int ans = -1;
        boolean[] loser = new boolean[n]; // u->v, v一定不是冠军
        for (int[] e : edges) {
            loser[e[1]] = true;
        }
        for (int i = 0; i < n; ++i) {
            if (loser[i]) continue;
            if (ans == -1) {
                ans = i;
            } else { // 存在多个冠军
                return -1;
            }
        }
        return ans;
    }
}

思路2:

入度不为0的节点肯定不是冠军

所有我们先统计所有节点的入度,入度为0的节点可能是冠军

由于冠军只能有一个,所以如果有多个入度为0的节点,则返回-1.

class Solution {
    public int findChampion(int n, int[][] edges) {
        int[] in = new int[n];
        for (int[] e : edges) {
            in[e[1]]++;
        }
        int ans = -1;
        for (int i = 0; i < n; ++i) {
            if (in[i] > 0) continue;
            if (ans == -1) {
                ans = i;
            } else { 
                return -1;
            }
        }
        return ans;
    }
}

1702. 修改后的最大二进制字符串

题目描述

给你一个二进制字符串 binary ,它仅有 0 或者 1 组成。你可以使用下面的操作任意次对它进行修改:

  • 操作 1 :如果二进制串包含子字符串 "00",你可以用 "10" 将其替换。
    • 比方说, “00010” -> “10010”
  • 操作 2 :如果二进制串包含子字符串 "10" ,你可以用 "01" 将其替换。
    • 比方说, “00010” -> “00001”

请你返回执行上述操作任意次以后能得到的 最大二进制字符串 。如果二进制字符串 x 对应的十进制数字大于二进制字符串 y 对应的十进制数字,那么我们称二进制字符串 x 大于二进制字符串 y 。

思路分析

贪心

结论一:最终结果不存在两个相邻的0,因为00通过操作1,可以变为10,比00更大。

结论二:最终结果至多只有一个0。
假设存在多个0,并且多个0不相邻,例如字符串101011,对于2 3 位置的10,通过操作2,可以变为01,所以整体字符串变为100111,再通过操作1,00变为10,所以整体字符串变为110111,这就是最终结果。
观察101011到100111,相当于将第二个0,移动到第一个0后面,1依次后移。
再观察100111到110111,除最后一个0外,其他位置的0变为1。

结论三:全为1的字符串直接返回

所以总结一下最终结果的构成:

假设第一个0出现的位置为i,i位置后面1的个数为cnt个,那么最终结果的后cnt位肯定都是1,第i位置为0,第i位置其他的元素也全为1.

具体做法:统计第一个0后面1的个数,假设是one个,字符串的长度为n,那么最终结果= n - one - 1个1 + 0 + cnt个1

class Solution {
    public String maximumBinaryString(String binary) {
        int n = binary.length();
        int one = 0; // 记录第一个0后面的1的个数
        boolean flag = false; // 标记第一个0是否出现
        for (int i = 0; i < binary.length(); ++i) {
            if (flag && binary.charAt(i) == '1') {
                one++;
            }
            if (binary.charAt(i) == '0') {
                flag = true;
            }
        }

        if (!flag && one == 0) {
            // 如果全为1(0没有出现),直接返回binary
            return binary;
        }
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < n - one - 1; ++i) {
            sb.append("1");
        }
        sb.append("0");
        for (int i = 0; i < one; ++i) {
            sb.append("1");
        }
        return sb.toString();
    }
}

830. 较大分组的位置

题目描述

在一个由小写字母构成的字符串 s 中,包含由一些连续的相同字符所构成的分组。

例如,在字符串 s = "abbxxxxzyy" 中,就含有 "a", "bb", "xxxx", "z" 和 "yy" 这样的一些分组。

分组可以用区间 [start, end] 表示,其中 start 和 end 分别表示该分组的起始和终止位置的下标。上例中的 "xxxx" 分组用区间表示为 [3,6] 。

我们称所有包含大于或等于三个连续字符的分组为 较大分组 。

找到每一个 较大分组 的区间,按起始位置下标递增顺序排序后,返回结果。

思路分析

双指针

一个指针标记区间开始,一个指针标记区间结束

class Solution {
    public List<List<Integer>> largeGroupPositions(String s) {
        List<List<Integer>> ans = new ArrayList<>();
        List<Integer> t = new ArrayList<>();
        int l = 0, r = 1;
        while (l < s.length()) {
            if (r < s.length() && s.charAt(r) == s.charAt(r - 1)) {
                // 区间扩张
                r++;
            } else {
                if (r - l >= 3) {
                    // 区间长度大于等于3,收集结果
                    t.add(l);
                    t.add(r - 1);
                    ans.add(new ArrayList<>(t));
                    t = new ArrayList<>();
                }
                l = r;
                r = l + 1;
            }
        }
        return ans;
    }
}
Agilent N5230A矢量网络分析仪在射频器件S参数测试中的关键操作指南 本文详细介绍了Agilent N5230A矢量网络分析仪在射频器件S参数测试中的关键操作流程与技巧。内容涵盖从开机预热、校准(SOLT/ECal)、参数设置(频率、点数、功率、IFBW)到连接测量、数据保存分析的全过程,并分享了夹具去嵌入、时域分析等进阶功能与常见问题避坑指南,旨在帮助工程师获得精准可靠的散射参数测试结果。 阅读详情

相关推荐

JavaFX - 动画

JavaFX 动画

思你日度难眠 1601

100-36

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34062329的博客 139

Diffusion Model进阶解析:从SDE到概率流ODE的连续化生成建模

本文深入解析了Diffusion Model的连续化生成建模,从离散DDPM和SGM模型引入,阐述了采用随机微分方程(SDE)统一视角的必要性与优势。文章详细拆解了SDE的构成,揭示了其如何统一描述扩散过程,并重点介绍了逆向SDE与确定性的概率流ODE,后者为高效、确定的图像生成提供了理论基础。最后,文章对比了朗之万动力学、数值SDE求解器和数值ODE求解器(如DPM-Solver)等主流采样方法的实战应用与选择策略。

weixin_29099217的博客 437

【LeetCode周赛】LeetCode第370场周赛

一场比赛中共有 n 支队伍,按从 0 到 n - 1 编号。给你一个下标从 0 开始、大小为 n * n 的二维布尔矩阵 grid。对于满足 0

a碟的博客 261

微信小程序|基于小程序+云开发制作一个菜谱小程序

今天吃什么?这是一个让强迫症左右为难的问题,跟随此文基于小程序+云开发制作一个菜谱小程序,根据现有食材一键生成菜谱,省心又省力。

商务合作 / 项目定制 / 学习交流。个人vx:lovely_wml 1万+

【WRFDA安装第一期】安装 WRFDA 以运行 3DVAR/4DVAR数据同化

【WRFDA安装第一期】安装 WRFDA 以运行 3DVAR/4DVAR数据同化

WW、forever的博客 1895

嵌入式软件刷题笔记【第四天】

嵌入式软件面试高频知识点

weixin_51462579的博客 625

为何wait和notify方法必须加锁?

为何wait和notify方法必须加锁? 是为了避免Lost Wake Up问题,即丢失唤醒问题。 所谓Lost Wake Up,指的是:线程A调用wait()方法进入阻塞状态,接下来没有其他线程去唤醒线程A,或者其他线程唤醒的时机不对(早于线程A的wait()),导致线程A永远阻塞下去。 下面以一个生产者和消费者的案例来说明上述问题。 假如我们有两个线程,一个消费者线程,一个生产者线程。生产者线程的任务可以简化成将count加一,而后唤醒消费者;消费者则是将count减一,而后在减到0的时候陷入睡眠,.

打酱油的葫芦娃 9155

刷题第四天(跑路人笔记)<双指针>

文章目录第四天(双指针)翻转字符串反转字符串中的单词 ||| 第四天(双指针) 翻转字符串 344. 反转字符串 - 力扣(LeetCode) 双指针一个指向最左一个指向最右, 进行交换即可=.=(好水的一道题) void reverseString(char* s, int sSize) { int left = 0; int right = sSize - 1; while(left < right) { int tmp = s[left];

qq_61434711的博客 151

【WSN定位】基于AOA算法实现目标无源定位附matlab代码

1 简介 2 部分代码 clear all; close all; clc;​stations = [0 0 0;20 0 0]; %基站位置​X = -100:100; %生成目标位置Y = X.*sin(X);Z = X+Y;N = length(X);Locations = zeros(N,3);angs = zeros(N,4);for i = 1:N angs(i,:) = Angs(stations*1e3,[X(i),Y(i),Z(i)]*1e3);end​for

qq_59747472的博客 2308

基于STM32+OneNet设计的物联网智慧路灯(100)

本次设计的智能路灯采用STM32芯片和OneNet物联网平台进行连接,开发出支持太阳能充电锂电池供电、GPS定位上传位置信息、手动/自动控制路灯开关、环境光照调节、红外传感器检测周围人员、空气质量监测等多项功能。同时,当路灯发生异常情况时,系统可以自动发送邮件或短信到指定邮箱或电话。

7725

leetcode刷题笔记(9)第四天,反转字符串

编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。 示例 1: 输入:["h","e","l","l","o"] 输出:["o","l","l","e","h"] 示例 2: 输入:["H","a","n","n","a","h"] 输出:["h","a","n","n","a","H"]

Sychen__的博客 142

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

LeetCode热题100 刷题笔记(第四天)二分 「 寻找两个正序数组的中位数」

本文介绍了如何高效求解两个有序数组的中位数问题。通过将问题转化为寻找第k小元素的二分查找算法,实现了O(log(m+n))的时间复杂度。核心思路是:每次比较两个数组的第k/2个元素,排除较小的一半元素,逐步缩小搜索范围。文章详细解释了边界条件处理(如空数组、k=1等情况)和递归逻辑,并通过示例演示了算法执行过程。该方法巧妙地利用了有序数组的特性,避免了直接合并数组的高开销,适合处理大规模数据。

2301_81189772的博客 526

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

【第四天】LeetCode刷题笔记分享 | 容易篇 | 1480一维数组的动态和

大家好,我是Cohen,叫这个名字的原因是我非常喜欢一个叫做莱昂纳德.科恩诗人。我是一名致力于学习编程的学生,因为想等到以后毕业有一个好的面试结果,所以最近将刷题提上了日程,,所以我打算从LeetCode简单的题目开始刷起,通过积累学习的方式,不断的提高自己的编程硬实力。我的个人公众号附在文章末位,感兴趣的朋友们,可以扫码关注,在公众号我会经常分享一些学习心得和学习资源。 题目信息 1.1 题目的描述 给你一个数组 nums 。数组「动态和」的计算公式为:runningSum[i] = sum(nums.

weixin_45615071的博客 360

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

leetcode刷题笔记(10)第四天,反转字符串中的单词 III

给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。 示例: 输入:"Let's take LeetCode contest" 输出:"s'teL ekat edoCteeL tsetnoc" 提示: 在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。 引入头文件#include<sstream> istringstream介绍:istringstream类用于执行C++风格的字符串流的输入操作。 用代码解释: ...

Sychen__的博客 216

【LC刷题笔记】第四天:23+26+33(1-16)

33. 搜索旋转排序数组 升序排列的整数数组 nums 在预先未知的某个点上进行了旋转(例如, [0,1,2,4,5,6,7] 经旋转后可能变为 [4,5,6,7,0,1,2] )。 请你在数组中搜索 target ,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。 示例 1: 输入:nums = [4,5,6,7,0,1,2], target = 0 输出:4 示例 2: 输入:nums = [4,5,6,7,0,1,2], target = 3 输出:-1 示例 3: 输入:nums = [

qq_37194898的博客 287

C语言:第四天笔记

是取地址运算符,用于取出变量的地址。与格式输出一样,在格式控制中,用于说明输入数据格式的格式说明符总是以%开头,后面紧跟具体的格式。如果在小数点后取n位后,所规定的数据宽度m不够输出数据前面的整数部分(包括小数点),则按实际的位数进行输出。%g或者%G形式:根据数值的大小,自动选择%f或者%e中宽度较短的⼀种格式,不输出⽆意义的0。在输出实型数据时,格式说明符中的m表示整个数据所占的列宽,n表示小数点后面所占的位数。在输出实数型数据时,格式说明符中的m表示整个数据所占的列宽,n表示小数点后面所占的位数。

weixin_65529724的博客 1688

MySQL学习笔记(第四天)

->"---MySQL"(消去末尾的'-')SELECT "---MySQL--", TRIM(LEADING '-' FROM '---MySQL--');-->"MySQL--"(消去开头的'-')SELECT "---MySQL--", TRIM(BOTH '-' FROM '---MySQL--');--> 2019-01-01 往前5年。--> 2023-11-27 往前5周。

2303_78135757的博客 1693

算法刷题集训第四天--贪心

⭐️个人主页:摸鱼の文酱博客主页🙋‍♂️ 🍑博客领域:java编程基础,mysql 🍅写作风格:干货,干货,还是tmd的干货 🌸精选专栏:【Java】【mysql】 【算法刷题笔记】 🎯博主的码云gitee,平常博主写的程序代码都在里面。 🚀支持博主:点赞👍、收藏⭐、留言💬 🍭作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!......

qq_53947552的博客 728

Linux基础:第四天笔记

Linux基础第四天笔记摘要 主要内容: 通配符:*匹配多字符,?匹配单字符,[]匹配指定范围字符 权限系统:详细说明r(4)、w(2)、x(1)权限对文件和目录的不同操作影响 压缩工具: gzip:仅压缩文件(.gz),支持递归(-r) bzip2:更高压缩率(.bz2),支持保留源文件(-k) zip:跨平台压缩(.zip),需安装,支持目录压缩(-r) 打包工具tar:结合-cvf(打包)、-xvf(解包),可配合-z(gzip)或-j(bzip2)进行压缩/解压 重点提示:tar命令的-f选项必须放

2402_84258445的博客 826

JavaScript第四天的笔记

JavaScript第四天的笔记 赋值运算符 一元运算符 运算符优先级 循环结构

qq_41943654的博客 109

《Linux就该这么学》上课第四天的笔记

今天是开课第四天,难度一般,要记的命令有些多。。 跟上进度没有问题。 1. 2. 3. 4.

qq_40383366的博客 195

随缘刷题算法学习笔记

文章目录前言一、第一天总结 前言 每日一题算法,快乐源泉,当记录用~~ 一、第一天 题目:剑指 Offer 03. 数组中重复的数字 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof 解..

weixin_44181180的博客 550

JavaScript 基础第四天笔记

JavaScript 基础第四天笔记

upgrade_bro的博客 314

Linux基础:第四天

本质山我们使用Linux自带的编辑器叫做Vi编辑器(类似于window的记事本,我们一般用来进行文件的编辑),名字取字Visual,他是一个全屏幕文本编辑器(程序)。在linux系统中Vi中最常用的编辑程序,他的文本编辑功能十分强大,但是使用起来比较复杂。Vim是Vi的增强版,所以Vi的功能Vim都有,而且Vim新增Vi没有的功能,他比Vi更容易使用。这个工具不是Linux内置,需要额外的安装。

weixin_59161417的博客 779

笔记 - 5 - 第四天

C语言

2401_89124067的博客 203
上一篇: 【刷题笔记】第三天
下一篇: 【刷题笔记】第五天
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值