代码随想录 day1

论文必备 - YOLOv12热力图可视化,支持指定模型,指定显示层,设置置信度,以及10种可视化实现方式 本文带来的是YOLOv12热力图可视化功能,支持,以及。我们经常看到一些论文里绘制了不同的热力图,一方面能够直观的感受其模型的有效性,另一方面也丰富了论文内容。特别是在使用了注意力模块的网络中,热力图就可以验证注意力机制是否真正聚焦到了预期的重要特征上,以便对模型的有效性和合理性进行评估。例如这篇文章中展示的,就很能够表达作者改进后的模型相比之前模型的优越性。 阅读详情

今天的任务是:

数组理论基础

虽然在c和Java基础中学过,还是要再注意一下

  1. 数组的元素不能删除,只能覆盖
  2. 那么二维数组在内存的空间地址是连续的么?

对于不同的语言来说,内存管理是不一样的,例如C和C++,二维数组是连续分布的

但在Java中,没有指针,寻址操作交给虚拟机,

在Java中,当你声明一个二维数组,如 int[][] array = new int[M][N];,实际上发生的是:

  1. 外层数组分配:首先,JVM分配了一个大小为M的一维数组,数组的每个元素都是引用类型(在Java中,这是int[]类型的引用)。

  2. 内层数组分配:然后,对于外层数组的每个元素(即每个int[]引用),JVM会分别分配一个大小为N的整数数组。这些内层数组(行)在内存中并不是连续分布的,它们可以分布在内存的任意位置,只要它们的引用被保存在外层数组中。--对于高亮语句的解释:对于多维数组来说,外层数组的每个元素都是一个引用变量,这些变量存储了指向内层数组的引用。当你通过外层数组的索引访问某个元素时,你实际上是在获取该索引位置上的引用,然后通过这个引用来访问内层数组(或更低维度的数组)。

二分查找

关于这个算法还是先了解基本内容:
也叫折半查找,
每次考察数组当前部分的中间元素(middle),如果中间元素刚好是目标元素(target),就结束搜索。如果中间元素小于所查找的值,就在数组左半部分[left,middle]查找;如果中间元素大于所查找的值,就在数组右半部分[middle,right]查找。

注意:

  1. 查找的元素必须是有序排列
  2. 数组中无重复元素,这样能保证查找下标的唯一性

代码思路:

  1. 极限情况要排除,避免循环

  2. 设置左右起始位置

  3. 开始循环判断(先调整mid位置,再与target值比较判断,最后得出结果)

易错点:区间的缺点、mid的设置

情况一:左闭右闭

public int search(int[] nums, int target) {
        // 避免当 target 小于nums[0] nums[nums.length - 1]时多次循环运算
        if (target < nums[0] || target > nums[nums.length - 1]) {
            return -1;
        }
    left=0;
    right=maxsize-1;
    //确定区间,要保证合法,
    while(left<=right)//按照情况来说应该是小于等于
    {
        mid=(left+right)/2;
        //判断
        if(nums[mid]>target)//范围缩小在左半边,更改right的值
            right=mid-1;
    //由于是闭区间包含mid,既然mid不是要找的下标,应该-1,而不是right=mid,若right为mid,则代表mid没有满足nums[mid]>target,但又被包含在范围内,是错误处理,所以应为mid-1,将不满足要求的mid越过
        elseif(nums[mid]<target)
            left=mid+1;
        else return mid;
    
    }
    return -1;
}

情况二:左闭右开

left=0;
right=maxsize;//右开不包含右边界,所以right取值应取到右边界
//确定区间,要保证合法,
while(left<right)//按照情况来说应该是小于
{
    mid=(left+right)/2;
    //判断
    if(nums[mid]>target)//范围缩小在左半边,更改right的值
        right=mid;
    //由于右开,所以mid取值的过程不包括right的值,不用+1
    elseif(nums[mid]<target)
        left=mid+1;//左闭包含left,更新范围时应除去left
    else return mid;
    
}
return -1;

练习题

35. 搜索插入位置 - 力扣(LeetCode)

唯一不同的是要返回left,因为题目说明如果找不到target对应的下标,就按顺序插入到里面

移除元素--暴力、双指针

注意

  1. 数组的删除操作其实是覆盖而不是删除,即使一些方法例如length返回操作之后的个数,但其实实际上还是操作之前的空间大小,只是内部计数器返回的值
  2. erase函数:时间复杂度是O(n)而不是O(1)

暴力解法

题目要求与erase函数作用一致,思路是外层循环找到删除的值,内层循环将后面的数值向前移动

// 时间复杂度:O(n^2)
// 空间复杂度:O(1)
class Solution {
public:
    int removeElement(vector<int>& nums, int val) {
        int size = nums.size();
        for (int i = 0; i < size; i++) {
            if (nums[i] == val) { // 发现需要移除的元素,就将数组集体向前移动一位
                for (int j = i + 1; j < size; j++) {
                    nums[j - 1] = nums[j];
                }
                i--; // 因为下标i以后的数值都向前移动了一位,所以i也向前移动一位
                size--; // 此时数组的大小-1
            }
        }
        return size;

    }
};

双指针解法

思路

双指针代替了双层循环,分为快指针和慢指针

快指针是指向删除之后数组所需要的元素值,慢指针是用来标记新数组所需元素的下标,也可以理解为reader和writer指针(一个读一个写),将快指针读取到的值赋给慢指针

class Solution {
    public int removeElement(int[] nums, int val) {
        slow=0;
        for(fast=0;fast<nums.size;fast++)
        {
            if(nums[fast]!=val)
            {
                nums[fast]=nums[slow];
                slow++;
                //更简洁的写法:nums[slow++]=nums[fast];
            }
    
        }
        return slow;//最后一步时,slow所指向的下标就是更新后的数组下标,即新数组长度
    }
}

RK3568 OpenHarmony3.2 蓝牙模块AP6275S适配(已更新) OpenHarmony3.2 Release版默认是适配AP6275s这款蓝牙芯片的,但是打开蓝牙,发现无法扫描到设备、连接设备。目前平台soc为RK3568,根据项目要求,自定义外设。接下来将以解决bug为目的,学习和记录OpenHarmony平台下蓝牙模块的适配流程。RK809 CLK:32.768KHzUART1M1:与蓝牙模块通讯的串口:GPIO4_B6:GPIO4_A5WAKE_GPIO:未定义,硬件拉高1.8V: 未定义,悬空主要是打开串口,/dev/ttyS1,得到文件描述符fd。 阅读详情

相关推荐

【LLM】ms-Swift框架下SFT与GRPO协同优化的高效训练策略

本文深入探讨了ms-Swift框架下监督微调(SFT)与群组相对策略优化(GRPO)的协同训练策略,提升大型语言模型(LLM)的性能与效率。通过创新的架构设计和两阶段训练流程,结合GRPO的群组奖励估计与动态基线调整技术,显著优化了数学推理等任务的准确率。文章还分享了计算资源高效利用和参数调优的实战经验,为LLM训练提供了实用指导。

green的博客 994

网站收藏箱

文章内容都是笔者日常工作与学习接触到,并且觉得不错的网站,特收录在册,欢迎广大读者提供补充,文章会持续更新

沉梦听雨的博客 1万+

LabVIEW新手必看:5个工业自动化实战项目从零搭建(附完整代码)

本文为LabVIEW新手提供了5个从零开始的工业自动化实战项目指南,涵盖数据采集、状态机控制、PID闭环、振动监测及多站协同监控。通过详细的架构解析和关键代码片段,帮助读者快速掌握LabVIEW图形化编程的核心逻辑与工程化思维,并附完整代码实现。

agile9scrum的博客 1073

算法速成之代码随想录

有些同学想要学习算法题,但是时间很紧,自己的基础也不是很好,想要在空余时间完全掌握所有算法题确实有点不切实际了,终于去学习了遇到难题又半途而废,于是我总结了一下刷代码随想录题目的方法先看b站视频:BV1fA4y1o715,有规划的看,每一类题可以看一到两道,看完去做题,感觉基本了解了就可以直接看代码随录博客的题目跟着做,因为看视频较为费时间,博客中的注释非常详细;写题时候,,实在无从下手就他的,看完应该都能自己写了,如果连思路都看不懂,那么就求助gpt或者去看他的视频;每周写题也要有一定的规划,

qq_63728673的博客 7032

【Proteus】NE555纯硬件实现LED呼吸灯效果,附源文件,效果展示

本设计通过NE555与三极管的巧妙配合,仅用基础元件实现了呼吸灯效果。核心在于利用RC积分电路将PWM信号转换为控制电压,并通过负反馈动态调节占空比。Proteus仿真验证了方案的可行性,读者可进一步优化参数或扩展功能,探索更多硬件设计可能性。

2201_75797484的博客 2983

运算放大器测试方法-输入失调电压

由于运放输入回路的不对称性,在输入端将产生一定的误差信号,从而限制运放信号灵敏度。通常用输入失调电压(VOS)、输入失调电流(Ios)和输入偏置电流(IB)表示。运放有四个主要特征:输入失调特征、开环特征、共模特征及输出特征。其放大倍数较大,由于外界的影响,即使运放的输入端产生较小的输入信号,经过放大,在输出端也会产生较大的误差。为能精确测量其性能,一般采用辅助运放进行测试。下面着重讲了运放的主要参数及如何精确测量这些参数。文中DUT代表被测运放,A代表辅助运放。

weixin_46135931的博客 1万+

代码随想录刷题笔记 (python版本) 持续更新.....

代码随想录刷题笔记

hello world 1万+

MicroLogix1400编程(使用RSLogix 500 + RSLinx Classic Lite)

MicroLogix1400编程

noscallion的博客 1万+

【leetcode刷题总结】——代码随想录(链表总结)

什么是链表,链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思)。

lingxw的博客 4942

【FISCO-BCOS】 八、ubuntu配置Java环境

ubuntu配置Java环境需根据自己的java版本号进行细节修改,本文以jdk11.0.18版本为例。ps:通过此法还可以查看java安装路径,但必须是环境配置成功的情况下才能使用。二、添加Java环境路径。四、检查java环境设置。

naihe_fish的博客 4310

FPGA原型验证(八):SoC设计适配与实现策略

时钟门控在SoC设计中很常见,应该小心处理门控时钟,以成功地在FPGA上原型化SoC设计。现代FPGA综合工具在正确约束的情况下,可以自动处理大多数门控时钟。通过遵循本章中的指导方针,即使具有复杂时钟门控的SoC设计也可以得到处理,并成功地在FPGA上进行原型化。

叫好与叫座虽然不是对立面,但想在同一个作品中达到双重效果很难。 477

LeetCode代码随想录

代码随想录 (programmercarl.com) java 35.搜索插入位置 34.在排序数组中查找元素的第一个和最后一个位置 java 69.X的平方根 java java 27移除元素 c++ java 283.移动零 java 844.比较含退格的字符串 java:双指针版 java:栈版 97.有序数组的平方 c++ java

死也不承认自己笨的博客 2634

SAP HANA CDS View Syntax Options 全解:从语法到工程实践

本文面向SAP HANA工程师,深入解析CDS视图的语法与应用场景。文章涵盖XS Advanced环境下的CDS视图设计要点,包括SELECT基础语法、聚合函数与分组约束、参数化视图实现以及常见连接操作。特别强调工程实践中的注意事项:GROUP BY禁用表达式、原生表名大小写规范、结果集裁剪方式选择等。通过两个真实案例(办公室占用率统计和客户画像分析)展示CDS视图在实际业务中的应用,并提供性能优化建议。全文采用中英文混排规范,技术术语使用反引号标注,旨在为开发者提供清晰的CDS视图开发指南。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 212

代码随想录Day1

题目链接:https://leetcode.cn/problems/binary-search/给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。

HNTZB的博客 937

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

代码随想录(Day1)

给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1: 给定 nums = [3,2,2,3], val = 3, 函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。

m0_62493032的博客 654

STM32F407中文手册

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

代码随想录day1 数组

给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。

Hoshinoharuka的博客 380

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

代码随想录70期day1

【代码】代码随想录70期day1。

qq_19555169的博客 229

代码随想录day1_数组基础理论

代码随想录刷题记录

Gewe_Xiaokang的博客 733

Day1 代码随想录 刷题记录

总结:共刷两题,leetcode模板解释:感觉leetcode的代码框架跟自己之前在另一个网站上看到的有区别,本来自己的C++底子有点弱不禁风,但是基础的语法好像也还算熟悉,主打一个学到哪儿不会就补一下。public:// 实现代码的位置该常见代码块代表的意思是:class为类,Solution是评测系统自动定义的名称,等于是你的解题包裹的名称。public表示访问权限,允许评测系统访问该实现方法。vector<int>是整型格式的一种,定义了该函数最终的返回。

windyyyyyyyyyyy的博客 609

力扣 977 代码随想录Day1 第三题

【代码】力扣 977 代码随想录Day1 第三题。

2301_80653171的博客 197

代码随想录Day1打卡

704. 二分查找代码随想录代码随想录官网网站,代码随想录网站,代码随想录官网,代码随想录百度网盘,代码随想录知识星球,代码随想录八股文PDF,代码随想录刷题路线,代码随想录知识星球八股文二分查找其实可以使用分治思想递归,但是效率有点低,所以这里使用while语句进行简化。除此之外,在指针移动时要特别区间是否有-1,主要是看末尾是开区间还是闭区间,以列表[3,4,8,9]为例循环不变量最贴近实践的一次。

hey_guyhey_guy的博客 238

代码随想录刷题day1

感悟:从数组中移除元素,因为数组中的元素在内存中是连续的,所以不能只删除某个元素,只能覆盖。感悟:二分查找,看起来简单,实现起来有些细节需要格外注意。2-1、暴力解法,需要注意多个需要移除的值在一起的情况。元素的顺序可能发生改变。,如果目标值存在返回下标,否则返回。个元素有序的(升序)整型数组。

LL_xjbt的博客 308

代码随想录60期day1

当左闭右闭的时候,我们需要收紧区间(+1;当左闭右开的时候,我们可以(+1,-0;

qq_19555169的博客 270

代码随想录算法day1数组1

题目链接:704.二分查找 文章讲解: 视频讲解:左闭右闭 左闭右开 关于二分mid溢出问题解答: mid = (l + r) / 2时,如果l + r 大于 INT_MAX(C++内,就是int整型的上限),那么就会产生溢出问题(int类型无法表示该数) 所以写成 mid = l + (r - l) / 2或者 mid = l + ((r - l) >> 1) 可以避免溢出问题 对于二进制的正数来说,右移x位相当于除以2的x几次方,所以右移一位等于➗2,用位运算的好处是比直接相除的操作快严格的来说,双指针

皮蛋瘦肉粥的博客 327

代码随想录算法训练DAY1 二分查找和移除元素

记录一下算法学习之路

whhmatlab的博客 2041

力扣 27 代码随想录Day1 第二题

【代码】力扣 27 代码随想录Day1 第二题。

2301_80653171的博客 242
上一篇: Java基础语法
下一篇: 代码随想录 day2
cookieeee_
博客等级 码龄4年 189粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值