代码随想录35期Day8-Java

空地多无人平台协同路径规划复现:从建模到Matlab仿真全解析 路径规划是机器人领域的核心基础技术,从单机避障到多平台协同,问题复杂度显著提升。空地协同规划融合无人机与无人车的异构优势,通过将地图分层建模为空中与地面栅格,并采用A*算法生成初始路径、B样条平滑以及改进遗传算法进行任务分配与时间同步优化,能够有效处理几何约束、运动学约束和避碰约束等。该技术广泛应用于区域巡逻、目标搜索、物资转运等任务场景,也是高校论文复现和工程仿真的常见课题。本文从问题建模、算法设计到Matlab代码结构,系统梳理了一套空地多无人平台协同路径规划的复现思路,同时给出坐标系校准、遗传算法收敛 阅读详情

Day10题目

LeetCode344 反转字符串:不要使用内置方法,自己实现反转

核心思想:使用双指针,依次交换即可

class Solution {
    public void reverseString(char[] s) {
   		// 左指针
        int l = 0 ;
        // 右指针
        int r = s.length-1;
        while(l < r){
        	// 交换的过程
            char temp = s[l];
            s[l] = s[r];
            s[r] = temp;
            l ++;
            r --;
        }
    }
}

LeetCode514 反转字符串Ⅱ:每2k个反转前k个

核心思想:没有什么很多的优化,能够成功模拟出来就行了。主要技巧:for循环i一次增加2k个,然后反转i到i+k个就行了,需要特殊判断是否超过字符串大小。(Java的string操作也是挺繁琐的)

class Solution {
    public String reverseStr(String s, int k) {
        StringBuilder sb = new StringBuilder(s);
        // i一次加2k
        for(int i = 0 ; i < s.length(); i += 2*k){
            // i+k没有超范围
            if(i+k < s.length()){
            	// 反转i到i+k 内的
                sb = reverse(sb,i,i+k);
             }else{
             	// 超过了,就反转i到末尾
                sb = reverse(sb,i,s.length());
            }
        }
        return sb.toString();
    }
    // 自定义的一个区间反转方法,包含start,不包含end
    public StringBuilder reverse(StringBuilder sb , int start , int end){
        String substring = sb.substring(start,end);
        StringBuilder reversedSubstring = new StringBuilder(substring).reverse();
        sb.replace(start,end,reversedSubstring.toString());
        return sb;
    }
}

KamaCoder54 替换数字:把数字的部分全部替换成字符串"number"

核心思想:1.可以直接使用replace把其中的0-9都替换掉。2. 可以使用双指针,像之前去除数组的指定元素一样,一个代表新数组的index,一个遍历原字符串。

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String s = in.next();
        String result = replaceDigitsWithNumber(s);
        System.out.println(result);
    }
    public static String replaceDigitsWithNumber(String s) {
        int count = 0;
        for (int i = 0; i < s.length(); i++) {
            if (Character.isDigit(s.charAt(i))) {
            	// 计算有多少个数字
                count++;
            }
        }
        // 开一个新数组,存放答案
        char[] res = new char[s.length() + count * 5];
        // 左指针从 原字符串的末尾开始
        int left = s.length()-1;
        // 右指针从 数组的末尾开始
        int right = res.length - 1;
        while (left >=0 && left <= right) {
            char c = s.charAt(left);
            // 如果是数字
            if (Character.isDigit(c)) {
                // 新数组里面填充number
                res[right--] = 'r';
                res[right--] = 'e';
                res[right--] = 'b';
                res[right--] = 'm';
                res[right--] = 'u';
                res[right--] = 'n';
            } else {
            	// 不是数字则直接添加到新数组
                res[right--] = c;
            }
            // 处理字符串中下一个字符
            left--;
        }
        return new String(res);
    }
}

LeetCode151 反转单词:主要是给的字符串中空格数量不一,你需要把前后空格去掉,单词之间只能留一个空格

核心思想:去除多余空格,反转整个字符串,逐一反转每个单词。总之自己能模拟出来就行,我的做法就略有不同。

class Solution {
    public String reverseWords(String s) {
        // 返回值
        StringBuilder res = new StringBuilder();
        // 插入的位置
        int index = 0;
        for(int i = s.length()-1 ; i >= 0 ; i--){
            // 如果字符串中这个字符为空
            if(s.charAt(i) == ' '){
            	// 如果返回值中为空,则首部不能有空格,所以直接continue
                if(res.isEmpty()){
                    continue;
                // 如果返回值中有值,那么这个空格应该是单词中间的空格,要判断是否已经有一个空格了,单词间只能有一个空格。
                }else if(res.charAt(res.length()-1) != ' '){
                    // 返回值末尾没有一个空格,那么就加上一个空格
                    res.append(' ');
                    // 将添加字母的位置移动到返回值末尾
                    index = res.length();    
                }
            }else{
            	// 正常插入到index的位置
                res.insert(index,s.charAt(i));
            }
        }
        // 因为上面的逻辑在最后一个单词末尾如果有空格也会插入,这里做一下去除空格
        return res.toString().trim();
    }
}

KamaCoder55 右旋字符串:实际上就是把字符串最后n位移动到字符串开头

核心思想:这题主要要在原地完成。所以使用区间反转完成,先局部反转前length-n个,然后反转后n个,最后全部反转就完成

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int index = in.nextInt();
        String s = in.next();
        // 先全部翻转,然后局部翻转,以 abcde,2 为例
        char[] chars = s.toCharArray();
        // 反转0 到 length-1-index,就是除了后index个之外的,cbade
        reverseString(chars,0,chars.length-index-1);
        // 反转最后 index个,cbaed
        reverseString(chars,chars.length-index,chars.length-1);
        // 全部反转一遍,deabc
        reverseString(chars,0,chars.length-1);
        System.out.println(new String(chars));
    }
    // 自定义的反转区间内元素的方法,包含start和end
    public static void reverseString(char[] chars, int start, int end) {
        while(start<=end){
            char temp = chars[start];
            chars[start] = chars[end];
            chars[end] = temp;
            start++;
            end -- ;
        }
    }
}
UE5高斯泼溅落地全链路:从PLY导入到实时渲染的工程实践 3D高斯泼溅(3D Gaussian Splatting)正从NeRF后处理技术演进为新一代隐式几何渲染范式,其核心在于以可微椭球体替代传统三角面片,通过协方差矩阵与球谐系数实现高质量体素化渲染。该技术突破点云精度瓶颈,但与UE5现有资产管线存在根本性不兼容——静态网格导入器无法解析scale/rot/sh系数等非标顶点语义,标准光栅化管线亦无法执行高斯核采样计算。XV3DGS-UEPlugin通过自定义资产类型、StructuredBuffer GPU数据流与专用材质节点,将高斯泼溅重构为可编辑、可LOD 阅读详情

相关推荐

python爬虫入门教程(非常详细)

爬虫指的是一种自动化程序,能够模拟人类在互联网上的浏览行为,自动从互联网上抓取、预处理并保存所需要的信息。爬虫运行的过程一般是先制定规则(如指定要抓取的网址、要抓取的信息的类型等),紧接着获取该网址的HTML源代码,根据规则对源代码进行解析和抽取,最后进行处理和保存。爬虫在实际应用中广泛使用,如搜索引擎、大数据分析、交易数据采集等领域,都需要用到爬虫技术来实现信息的定向采集和处理。

工宗浩生财指南针 2万+

代码随想录-算法训练营day35(贪心算法05:无重叠区间,划分字母区间,合并区间)

贪心算法:重叠区间

weixin_61931006的博客 2557

使用VNC可视化Docker容器

Docker容器可视化

Robert_Q的博客 1万+

代码随想录35期Day09-Java

核心思想:暴力之外的方法:当最长s-next刚好可以被s整除的时候,说明s就是由这么长的字串重复得到的。得到的最长next值为8,字符串长度为10,10-8=2 ,10%2 == 0;核心思想:KMP算法,比较难理解,建议找视频看,

github_72392797的博客 191

静态时序分析(Static Timing Analysis, STA):简介及内容导航

静态时序分析(简称STA)是用来验证数字设计时序的技术之一,另外一种验证时序的方法是时序仿真,时序仿真可以同时验证功能和时序。“时序分析”这个术语就是用来指代“静态时序分析“或”时序仿真“这两种方法之一,简单来说,时序分析的目的就是为了解决设计中的各种时序问题。STA被称为静态的原因是其对于设计的分析是静态地执行的,并不依赖于施加在输入端口上的激励。相比之下,时序仿真则可以被视作动态地执行对设计的分析,具体过程描述如下:施加一组激励,观察在这组激励下电路行为是否符合要求,然后换一组激。

Starry__的博客 1987

ABB机器人与西门子PLC、工业相机联合实现无序抓取的完整调试方案

将此方案导入系统后,逐步执行调试,确保各环节信号正常触发,即可实现高效无序抓取!

CHUXUEZHE8210的博客 1992

代码随想录-Day35

该算法通过两次遍历确保了每个孩子的糖果数满足题目的两个条件,同时尽可能地减少了糖果的总消耗,是一种既直观又高效的解决方案。该算法通过先排序后构建的方法,有效地解决了队列重建的问题。排序步骤确保了在插入过程中可以直接根据人的身高和前面人数的要求找到合适的位置,而链表的特性支持了在特定位置快速插入元素,从而保证了整体的时间效率。

ToBewhatyouwannabe的博客 1080

国产安全芯片在密码算法国密体系下的性能适配策略

国密体系即国家商用密码体系,是保障信息安全的核心技术体系。自20世纪90年代末起步,国密体系经历了从无到有、从弱到强的发展历程。1999年,国家密码管理局成立,标志着国密体系的正式建立。2000年,国密SM1算法首次发布,开启了国密算法的标准化进程。此后,SM2、SM3、SM4等算法陆续推出,形成了完整的对称与非对称密码算法体系。:2010年,国密标准正式纳入国家标准体系,国密算法在金融、政务、通信等关键领域的应用得到明确规范。

qq_40552871的博客 1355

代码随想录-算法训练营day60(单调栈03:柱状图中最大的矩形)

单调栈03:数组中的最大矩形

weixin_61931006的博客 675

RH850从0搭建Autosar开发环境【23】- Davinci Configurator之DCM实操实现DID的读取写入

RH850从0搭建Autosar开发环境【23】- Davinci Configurator之DCM实操实现DID的读取写入,结合Developer实现

weixin_42412049的博客 1809

virtuoso:layout如何做flat修drc

有些drc在virtuoso layout中修更节省时间,比如遇到一些via array需要做删改时,发现工具把via array做成了一个cell,如图。去改cell可能会影响很多via,所以最好的办法是做flat,去调整cut,比如删除。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?

m0_61544122的博客 342

代码随想录35期Day04-Java

删除倒数第n个,那么需要把指针移动到倒数n-1个上,那么使快指针在dummyHead上,向前n次后,快慢指针同时移动,快指针结束后慢指针就在倒数n-1上。核心思想:双指针+数学关系,快慢指针可以判断是否有环,相交后使用两个指针,一个从他们相遇的位置走,一个从链表开头走,相遇的位置就是环的开头。假如A长度为8 ,B链表长度为4,那么相交部分最长为4,那么就可以从A的第五位来遍历后四位,并且每位只需要比较一次,而不用全部遍历。核心思想:感觉比较常规,使用指针不断向前走,每两个执行一次翻转,画图就相当清楚了。

github_72392797的博客 221

[nlp] 自然语言理解基准 ATIS Snips

ATIS 4k 21 Intents(not include UNK) 120 SlotsSNIPS 13k 7 Intents(not include UNK) 72 SlotsATIS Benchmark (Intent Detection) | Papers With CodeSNIPS Benchmark (Intent Detection) | Papers With Code

心宝的博客 747

代码随想录day35,动态规划part4

力扣题目链接有一堆石头,用整数数组 表示。其中 表示第 块石头的重量。每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 和 ,且 。那么粉碎的可能结果如下:如果 ,那么两块石头都会被完全粉碎;如果 ,那么重量为 的石头将会完全粉碎,而重量为 的石头新重量为 。最后,最多只会剩下一块 石头。返回此石头 最小的可能重量 。如果没有石头剩下,就返回 。示例 1: 输入:stones = [2,7,4,1,8,1] 输出:1 解释: 组合 2 和 4,得到 2,所以数组转化为 [

weixin_56656029的博客 617

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

代码随想录刷题day35丨 01背包问题 二维 ,01背包问题 一维 ,416. 分割等和子集

对于面试的话,其实掌握01背包和完全背包,就够用了,最多可以再来一个多重背包。如果这几种背包,分不清,我这里画了一个图,如下:完全背包又是也是01背包稍作变化而来,即:完全背包的物品数量是无限的。!01 背包。

m0_75195038的博客 1381

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

代码随想录算法训练营Day1

704.二分查找 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。主要考虑边界情况

qq_51561495的博客 540

【Leecode】代码随想录字符串篇day8(原地操作字符串)

字符串的原地操作之反转和替换

nufe/dut/python/java开发/记录日常感悟 1085

代码随想录算法训练营day1

数组是存放在上的的集合通过获取下标对应的数据数组下标都是的 数组的二维数组行第一索引 列第二索引如a[0][1]=1 a[2][3]=3c++中二维数组在地址空间上是连续的 Java中不连续。

Icewolf273的博客 849

代码随想录算法训练营day01|数组理论基础 704二分查找 27移除元素

力扣链接(opens new window)给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。进阶:你可以设计并实现时间复杂度为Olog⁡nO(\log n)Ologn的算法解决此问题吗?输入:nums = [5,7,7,8,8,10], target = 8输出:[3,4]输入:nums = [5,7,7,8,8,10], target = 6。

xinrenne的博客 871

代码随想录算法训练营

代码随想录一刷打卡记录!

Catherinemin的博客 1257

day01 代码随想录算法训练营(二分查找、双指针)

二分法+双指针经典例题

I_CLK的博客 864

【代码随想录算法训练营Day01】704. 二分查找; 27. 移除元素

区间的定义就是不变量,要在二分查找的过程中,保持不变量,在while寻找中每一次边界的处理都要坚持根据区间的定义来操作,这就是循环不变量规则。二分法区间的两种写法:左闭右闭or 左闭右开。

Tammy2001的博客 1079

代码随想录-算法训练营day01【数组01:二分查找、移除元素、插入元素】

代码随想录-算法训练营day01【数组01:二分查找、移除元素、插入元素】

upward 881

java后端工程师+AI大模型开发进修ing(研一版‖day61)

java随笔录——redis集群方案 AI随探录——继智能输入法案例 代码随想录——复原IP地址,子集

qq3094554285的博客 894

代码随想录Day35 本周小结动态规划,动态规划:01背包理论基础,动态规划:01背包理论基础(滚动数组),416. 分割等和子集。

代码随想录Day35 本周小结动态规划,动态规划:01背包理论基础,动态规划:01背包理论基础(滚动数组),416. 分割等和子集。

get_money_的博客 855

(待复习9.20) 01--数组

力扣:https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/description/解题思路:情况一:target 在数组范围的右边或者左边,例如数组{3, 4, 5},target为2或者数组{3, 4, 5},target为6,此时应该返回{-1, -1}

qq_45655136的博客 1304

InnoDB 内存结构总览:Change Buffer、AHI 与 Log Buffer

本文系统梳理InnoDB内存结构中的ChangeBuffer、Adaptive Hash Index(AHI)与LogBuffer。ChangeBuffer缓存二级索引页不在内存时的变更,减少随机IO,仅在页加载时合并;聚簇索引修改立即执行,因数据本身不可延后。AHI基于高频等值查询自动构建哈希索引,加速定位,仅支持等值操作。LogBuffer为redo log内存缓冲,配合磁盘日志实现崩溃恢复。三者均服务于性能优化,其中ChangeBuffer与AHI共享BufferPool空间,而LogBuffer独立

bksczm的博客 44
上一篇: 代码随想录35期Day07-Java
下一篇: 记一次因为MySQL连接数过多,SpringBoot连接数据库超时的问题
Gohoy
博客等级 码龄4年 271粉丝 67原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值