代码随想录35期Day01-Java

非球面检测 摘要:非球面镜检测主要采用干涉法,包括零位补偿和非零位补偿两种方式。零位补偿通过透镜组完全校正像差,精度达1%波长,但设计复杂成本高;非零位补偿利用部分像差补偿降低波前斜率,适用于规则非球面。折射-衍射混合补偿镜能同时校正多种像差。实际检测中可采用物理补偿镜或动态CGH加载方案,光路设计需运用坐标断点和多重结构技术实现复杂光路建模。不同方法各具优势,需根据检测需求选择合适方案。 阅读详情

先写一下自己的背景吧。

某211大三Java选手,暑期实习投了很多很多,笔试很多,Java开发没有一个进面试,唯一进面的是第二志愿运维开发岗,一面挂。虽然对目前大环境和经济抱有怨言,但是算法是必须要刷的,没有任何捷径。之前刷过了牛客hot101,但是还差得远,题量少,也没有系统学习过算法,这肯定还敲不开大厂的门。所以,从现在开始,真正脚踏实地,去克服这些困难。种下一棵树的最好时机,一个是十年前,一个就是现在。

Day01题目

LeetCode704 二分查找,在数组中查找到target所在的下标

核心部分是:在二分查找的时候,如何确定循环的边界条件?

class Solution {
    public int search(int[] nums, int target) {
        int left = 0 ; 
        int right = nums.length- 1;
        // while是<=还是<呢?和初始右边界定义为nums.length还是nums.length-1相对应
        // 因为对于下标为nums.length-1,如果left=right都是nums.length-1,数组不越界,所以加上=
        while(left <= right){
            int middle =  (left+right)/2;
            if(nums[middle] > target){
            //right为middle还是middle-1?因为middle对应的值已经是大于目标值的了,下一个要判断的值最大时middle-1对应的,这段代码中因为while中是<=可以取到右边界,所以右边界就取middle-1
                right = middle-1;
            }else if( nums[middle] < target){
                left = middle+1;
            }else{
                return middle;
            }
        }
        return -1;
    }
}

LeetCode 27 移除元素,移除数组中对应元素

核心部分是:数组移除一个元素必须将后面的左移。暴力算法复杂度为n2,使用双指针可以很好简化复杂度。
双指针中,一个来遍历完这个数组,另外一个用来记录“新数组”的索引。
这个新数组指的是去除对应元素之后的数组。

class Solution {
    public int removeElement(int[] nums, int val) {
        // 快慢指针,慢指针记录的是新数组的下标
        // j 为新数组的索引
        int j = 0 ;
        for(int i = 0 ; i< nums.length ; i ++){
            if(nums[i] != val ){
            // 这里的元素是要“加到新数组”的
                nums[j] = nums[i];
                j++;
            }
        }
        return j;
    }
}

LeetCode34 在排序数组中查找元素的第一个和最后一个位置

相对上面的题目,这道题目查找左右边界的时候需要对二分查找找到目标值的时候的left,right取值非常明确。因为while执行的条件是 left <= right ,所以最后返回的时候 left 一定是大于right的。
根据middle 和 target 相等的时候移动left 还是right,使得left 移动到所有 target值的最右边,right 移动到target值的左边。得到的结果是,如果target在数组中的第二位,下标为1,right边界是2,left边界时0,返回 0+1 和 2-1 就行了。

class Solution {
    public int[] searchRange(int[] nums, int target) {
    // 这里时获取左右边界,左边界在所有target值的最左边,右边界在最右边。
        int left = searchLeft(nums, target);
        int right = searchRight(nums, target);
        int[] res = new int[2];
        res[0] = -1;
        res[1] = -1;
        if (left == -2 || right == -2)
            return res;
        else if (right - left > 1) {
            res[0] = left + 1;
            res[1] = right - 1;
        }
        return res;
    }

    public int searchLeft(int[] nums, int target) {
        int left = 0;
        int right = nums.length - 1;
        int leftBorder = -2;
        while (left <= right) {
            int middle = left + (right - left) / 2;
            if (nums[middle] < target) {
                left = middle + 1;
            } else {
                right = middle - 1;
                // 获取左边界,nums[middle]与target相等的时候,也让right左移,这样right会一直左移到 所有target值的最左边
                leftBorder = right;
            }
        }
        return leftBorder;
    }

    public int searchRight(int[] nums, int target) {
        int left = 0;
        int right = nums.length - 1;
        int rightBorder = -2;
        while (left <= right) {
            int middle = left + (right - left) / 2;
            if (nums[middle] <= target) {
                left = middle + 1;
                // 获取右边界,当nums[middle]与target相等的时候,让left右移,这样最后左边界会移动到所有target的右边。
                rightBorder = left;
            } else {
                right = middle - 1;
            }
        }
        return rightBorder;
    }
}
从零配置EtherCAT IGH主站:手把手教你处理内核版本与实时性优化的那些坑 本文详细指导如何从零配置EtherCAT IGH主站,涵盖内核版本适配、实时性优化及常见问题解决方案。通过精确匹配内核头文件、应用实时补丁和优化网卡驱动,帮助开发者实现微秒级响应,适用于工业自动化、机器人控制等高精度场景。 阅读详情

相关推荐

卸载重装Ubuntu22.04双系统

先说一下写此篇文章的背景吧,我在Windows下配置了三个cornerNet深度学习环境分别是cuda10.3(显卡版本太高不支持),cuda11.3(配置后偶然看到一篇说这个版本win下只能用CPU跑),最后是cuda11.1终究还是没能跑通代码,因为它的代码是在Liunx系统写的,就想着装个Ubuntu试试看,在网上看说一般软件不要装太高版本,我就下载了470版的显卡驱动,跟着步骤升级了系统内核,结果第二天开机Ubuntu就崩了,开机黑屏左上角只有一道横杠显示,只能按ctrl+shift+f5进入命令窗

编程小白的博客 8106

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

动态规划经典问题dp定义:表示从下标为[0-i]的物品里任意取,放进容量为j的背包,价值总和最大是多少状态转移方程:初始化:遍历:先遍历行,也就是先遍历物品,再遍历背包容量 01背包问题 一维 因为在二维里,的值只与左上角(上一行且左边)的值有关,所以只保存一行的值即可。状态转移方程:遍历顺序:因为要用到左上角的值,在一维里就是左边的值,所以要从后往前遍历,不然会影响到左边的值 416.分割等和子集 难点在于将问题转换为动态规划问题:然后就是背包问题的代码形式 [j]:

weixin_43992121的博客 418

affymatrix探针转换 | GPL5175探针对应的基因转换

一般情况下,有一些比较成熟的对应平台的注释数据集的R包。但是这个注释平台,我在Bioconductor上找了一圈都没有找到。只能通过最原始也最可靠的方法,从GEO数据集上去下载这部分的注释文件。以下展示全过程。 我要检查的数据平台是:GPL5157。 数据集的注释集链接为:https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GPL5175 这个注释数据集比较难弄的地方在于,它的基因集注释的不太好。没有比较直接的可供提取的genesample的信息;在ge.

weixin_40640700的博客 7124

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

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

m0_75195038的博客 1381

Windows环境下IBSIMU的安装

本文主要介绍离子束仿真程序IBSIMU在Windows环境下的安装。

C_Tso的博客 2992

QGC 转发RTSP流 到RTMP服务器

需求: QGC安卓版在接收摄像机RTSP视频流的时候,需要将视频推送到指定的RTMP服务器。 分析: QGC在处理音视频的时候使用了GStreamer这套框架,本身这套框架是跨平台的,所以无需关系环境,只要想到相应位置,添加对应功能代码,然后配置好安卓端的依赖库即可。 添加位置: GstVideoReceiver.cpp -》start函数负责音视频的流的播放,只需在此处添加上封装好的推流函数即可。 同理在stop中添加停止推流功能。 方便起见,可在界面上配置rtmp的推流地.

qthello 2324

代码随想录day35-01背包问题二维/01背包问题一维/分割等和子集

题目链接:46. 携带研究材料(第六期模拟笔试)题目讲解:代码随想录动态规划:1. 确定dp数组以及下标的含义:i表示物品,j表示背包容量。dp[i][j] 表示从下标为[0-i]的物品里任意取,放进容量为j的背包,价值总和最大是多少。2. 确定递推公式:递归公式:不放物品i:背包容量为j,里面不放物品i的最大价值是dp[i - 1][j]。放物品i:背包空出物品i的容量后,背包容量为j - weight[i],dp[i - 1][j - weight[i]] 为背包容量为j - weight[i]且不放物

zhengjojo的博客 1162

Bev算法在J5平台的部署

支持多种形式的Bev算法:ipmlss时序,以及基于transformer的gkt。

@bangbang的博客 845

Day35补代码随想录 01背包问题二维|01背包问题一维|416.分割等和子集

还需要再复习几遍这道题的难点是怎么将场景问题转换为背包问题细节 for(int j=target;j>=nums[i];j–) 注意遍历背包时,加了一个限制条件,j>=nums[i],如果数值已经大于target了,那就跳过。

爱因斯小柚的博客 919

软件设计师---程序设计语言

软件设计师---程序设计语言

我从不打没有准备的仗! 2万+

导航系统 | 全球四大卫星导航系统(2025)核心能力对比分析

北斗系统通过GEO卫星(80°E、110.5°E、140°E)实现区域增强,其IGSO卫星在亚太地区形成"8"字形轨迹,使该区域可见卫星数量比GPS多4-6颗,显著提升复杂环境下的定位可用性[13]。北斗短报文功能在2025年云南地震救援中发挥关键作用,被困人员通过北斗终端发送120字求救信息,实现"位置+状态"一体化上报,救援响应时间缩短40%[15]。北斗通过三频信号(B1C/B2a/B3)消除电离层延迟误差,在城市峡谷环境下定位连续性达99.98%,优于GPS的99.95%[5]。

尘世冰封的专栏 2611

代码随想录35期Day41-Java

核心思想:dp[i][j]的含义是:i个物品在j空间下的最大能携带价值,使用一个数组做滚动数组也可以,注意循环的时候空间遍历需要从后向前即可。核心思想:包装过的01背包。

github_72392797的博客 234

UNet改进(52):轴向+代理注意力让UNet既轻快又精准

本文提出了一种改进的UNet架构,通过引入轴向注意力代理模块增强医学图像分割性能。该模块将二维自注意力分解为行列两个一维注意力操作,结合可学习代理节点进行全局信息聚合,在保持计算效率的同时提升模型对长距离依赖的建模能力。实验表明,该方法在多个医学图像数据集上较传统UNet提升3.2%-5.7%的Dice系数,边界质量显著改善。该方案特别适用于具有方向性结构的医学图像分割任务,如血管、器官等,在计算复杂度和分割精度之间实现了良好平衡。

2501_91516851的博客 327

代码随想录DAY35|01背包问题、416. 分割等和子集

背包问题只用掌握01背包、完全背包即可,最多加上一个多重背包。动规五部曲:背包容量为j,里面不放物品i的最大价值是dp[i - 1][j]。:背包空出物品i的容量后,背包容量为j - weight[i],dp[i - 1][j - weight[i]] 为背包容量为j - weight[i]且不放物品i的最大价值,那么dp[i - 1][j - weight[i]] + value[i] (物品i的价值),就是背包放物品i得到的最大价值递归公式:;

ren_0538的博客 1179

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

代码随想录35期Day42-Java

核心思想:将这个问题转化成选择两组重量差不多的石头的01背包问题// 转化为选择两组相同重量的石头i++) {j <= sum/2;

github_72392797的博客 177

ssm框架搭建

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

day35 代码随想录算法训练营 动态规划专题3

动态规划专题3:01背包基础理论(一维二维)、分割等和子集

I_CLK的博客 1282

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

代码随想录系统性一刷总结

指针思想很重要day01 二分查找+移除元素day02 数组平方+长度最小子数组+螺旋矩阵II。

qq_44072579的博客 1048

day35 | | 01背包问题 二维 01背包问题 一维(二刷) 416. 分割等和子集

416. 分割等和子集。

m0_65709641的博客 301

代码随想录35期Day43-Java

核心思想:完全背包问题,与01背包不同,完全背包每个元素可以使用无限次.那么只要把一维数组中容量遍历顺序改为从前到后即可。核心思想:这个题目和上面的区别是组合顺序不同,看作是不一样的答案。完全背包问题,注意结果集顺序的影响。

github_72392797的博客 259

代码随想录算法day30 | 动态规划算法part03 | 01背包问题 二维 ,01背包问题 一维,416. 分割等和子集

背包问题 是动态规划里的经典类型题目,大家要细细品味。可能有的同学并没有注意到 初始化 和 遍历顺序的重要性,我们后面做力扣上背包面试题目的时候,大家就会感受出来了。在一维dp数组中,dp[j] 表示:容量为 j 的背包,所背的物品价值可以最大为 dp[j]。以上的讲解可以开发一道面试题目(毕竟力扣上没原题)。要求先实现一个纯二维的01背包,如果写出来了,然后再问为什么两个for循环的嵌套顺序这么写?反过来写行不行?再讲一讲初始化的逻辑。

m0_62415132的博客 1369

代码随想录day35 动态规划part03

有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i]。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。背包最大重量为4。物品为:重量 价值物品0 1 15物品1 3 20物品2 4 30问背包能背的物品最大价值是多少?以下讲解和图示中出现的数字都是以这个例子为例。

Hoshinoharuka的博客 409

代码随想录算法训练营32期(JAVA)| 第一章 数组 part01 DAY01

力扣704.二分查找,27.移除元素

like455的博客 436

代码随想录Day35:动态规划(背包问题 二维 一维、分割等和子集)

背包空出物品i的容量后,背包容量为j - weight[i],dp[i - 1][j - weight[i]] 为背包容量为j - weight[i]且不放物品i的最大价值,那么dp[i - 1][j - weight[i]] + value[i] (物品i的价值),就是背包放物品i得到的最大价值。递归公式中可以看出dp[i][j]是靠dp[i-1][j]和dp[i - 1][j - weight[i]]推导出来的。时,dp[0][j] 应该是value[0],因为背包容量放足够放编号0物品。

m0_73724472的博客 2119

代码随想录算法训练营Day35|动态规划Part03|01背包问题 二维、01背包问题 一维、416. 分割等和子集

本文介绍了01背包问题的动态规划解法及分割等和子集问题的应用。首先展示了二维和一维数组两种解法,通过物品重量[1,3,4]和价值[15,20,30]的示例,演示了如何计算最大承重4时的最大价值。在分割等和子集问题中,提出将问题转化为背包问题:判断是否存在子集和等于总和的一半。通过二维DP数组解法,计算是否能找到满足条件的子集。文章还指出了错误的双指针解法,并给出了正确的动态规划实现,包括初始化和状态转移过程。最终通过比较DP数组最后一行与目标和来判断分割可能性。

m0_71282417的博客 467

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

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

get_money_的博客 855

代码随想录算法训练营Day35 | 01背包问题 二维 01背包问题 一维 416. 分割等和子集

小明是一位科学家,他需要参加一场重要的国际科学大会,以展示自己的最新研究成果。他需要带一些研究材料,但是他的行李箱空间有限。这些研究材料包括实验设备、文献资料和实验样本等等,它们各自占据不同的空间,并且具有不同的价值。小明的行李空间为 N,问小明应该如何抉择,才能携带最大价值的研究材料,每种研究材料只能选择一次,并且只有选与不选两种选择,不能进行切割。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。数组可以分割成 [1, 5, 5] 和 [11]。

m0_74154872的博客 291
上一篇: 头歌平台的基本使用和评测脚本的修改
下一篇: 代码随想录35期Day02-Java
Gohoy
博客等级 码龄4年 271粉丝 67原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值