【刷题笔记】第四天

STM32F401RCT6最小系统原理图设计 STM32F401RCT6最小系统原理图设计一、主控芯片二、电源电路三、晶振电路三、下载电路四、完整电路图      本文章基于STM32F401RCT6进行最小系统原理图设计,包含主控芯片,电源,晶振电路,下载电路等几部分 一、主控芯片 主控芯片采用STM32F401RCT6,需注意: VBAT在不接电池的情况下需接3.3V,VDDAVREF+需接3.3V,否则会造成芯片供电不正常,无法启动和识别的情况 VDDAVREF+和VCAP1处电容需按照规格书 阅读详情

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;
    }
}
具身智能(40):主流 VLA 模型π₀ 摘要: π₀是首款专为机器人设计的VLA(视觉-语言-动作)端到端基础模型,通过双阶段训练实现“感知-决策-执行”闭环。其创新点包括:1)FlowMatching技术实现连续平滑动作控制(精度0.3°);2)结合VLM预训练与多机器人实操数据,零样本任务完成率达76.4%,远超同类模型;3)支持模糊指令理解与动态场景适应(如遮挡识别)。开源版本涵盖不同规模模型,适用于工业装配、服务机器人等场景,在延迟(213ms)和稳定性(92%自主恢复率)上显著领先OpenVLA等竞品。 阅读详情

相关推荐

【SAP】ABAP——ALV显示后选择数据操作

在ALV显示后,可全选、全不选或者选择几条数据进行发邮件、更新、下单等等操作。 在user_command中的实现方式如下: 方式一: FORM user_command USING ucomm LIKE sy-ucomm selfield TYPE slis_selfield. DATA: lr_grid TYPE REF TO cl_gui_alv_grid. DATA: lt_rows TYPE lvc_t_row WITH

Mona_1220的博客 4091

100-36

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

weixin_34062329的博客 139

别再手动调波形了!用STM32G474的HRTIM+DAC生成精密锯齿波,附完整CubeMX配置

本文详细介绍了如何利用STM32G474的高分辨率定时器(HRTIM)和数模转换器(DAC)协同工作,实现高精度锯齿波生成。通过CubeMX配置指南、关键寄存器计算和实践技巧,帮助开发者快速掌握全硬件实现的波形生成方案,显著提升嵌入式系统的波形控制精度和响应速度。

weixin_28716769的博客 246

【LeetCode周赛】LeetCode第370场周赛

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

a碟的博客 261

C语言——利用矩阵LU分解法求逆、行列式

本章介绍了LU分解法,以及如何利用LU分解法求逆、行列式,针对每个公式、原理、代码进行了详细介绍,希望可以给大家带来帮助。

王元笙 1万+

开源:AI+无人机巡检系统项目调研

本文系统梳理了主流开源无人机巡检技术栈,涵盖飞控系统(PX4/ArduPilot)、地面站软件(QGroundControl)、AI视觉识别(VisDrone/MPID/CPLID数据集)、三维重建(OpenDroneMap/COLMAP)和仿真模拟(AirSim/Gazebo)五大领域。通过对比各项目的技术特点、开发语言、开源协议及商用友好度,为无人机巡检产品开发提供完整的技术选型参考。重点推荐PX4飞控、DroneKit开发API等商用友好项目,同时分析了GPL/AGPL协议项目的开源要求。

lovehu6686的博客 2448

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

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

weixin_51462579的博客 625

gsplat在windows本地部署

3DGS的cuda提效和优化内存的版本gsplat,使得在有一定GPU计算能力的电脑上也能够尝尝3DGS的效果。我在2025年的开年之初尝试配置过gsplat,由于过程中遇到很多问题,最终还是有一些windows上字符编码的问题,没有跑通,最近看gsplat的github更新了3DGUT,优化了反射和二次折射,以及适用于非线性相机模型,如鱼眼相机等。在data目录下下载好了360_v2的数据,进入之后images文件夹是原始分辨率的图像,images_2是下采样系数为2的数据,以此类推。

yuleaf_csdn的博客 2370

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

文章目录第四天(双指针)翻转字符串反转字符串中的单词 ||| 第四天(双指针) 翻转字符串 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

Diffusion、VAE与GAN:三大生成模型的原理对比与应用场景解析

本文深入解析了Diffusion、VAE与GAN三大生成模型的核心原理与特性。Diffusion模型通过逆向去噪过程实现高质量图像生成,但计算成本较高;VAE擅长学习概率潜空间,训练稳定但图像偏模糊;GAN通过对抗训练生成锐利图像,但存在模式崩溃风险。文章结合实战场景,为图像生成、修复、超分辨率等任务提供了清晰的模型选择指南。

weixin_29063979的博客 342

Open3D(C++) 读取、可视化并保存点云【2025最新版】

博客长期更新,本文最近更新时间为:2025年1月6日。

点云侠的博客 4617

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

数控系统(CNC)系列:Fanuc 31i-B_(5).基本操作与编程

Fanuc 31i-B 系统使用 G 代码和 M 代码进行编程。G 代码主要用于控制机床的运动,M 代码用于控制辅助功能,如冷却液开关、主轴启动等。G 代码:用于指定机床的运动方式。例如,G00 用于快速定位,G01 用于直线插补,G02 用于顺时针圆弧插补,G03 用于逆时针圆弧插补。M 代码:用于控制机床的辅助功能。例如,M03 用于启动主轴顺时针旋转,M05 用于停止主轴,M08 用于开启冷却液,M09 用于关闭冷却液。

2401_87715305的博客 1766

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

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

2301_81189772的博客 526

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

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

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

weixin_45615071的博客 360

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

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

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

Sychen__的博客 216

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

【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
上一篇: 【刷题笔记】第三天
下一篇: 【刷题笔记】第五天
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值