【代码随想录】day1 数组

因为学计算机语言是属于半路出家,在接触数据结构之前,我只了解数据的类型,从没有了解过不同数据类型的存储方式。数组、链表等等因为不同的存储方式,展现出不同的优缺点,以适应不同的用途。
代码随想录是属于把饭喂到嘴里的好!里面资料对于我这种小白来说,真的是很保姆了。之前刷过一小段时间的力扣算法,但没有坚持下来,学到链表就已经放弃。这次学习给自己一个目标:
按照卡哥的进度,完成整个数据结构的主要题目,并在平台中打卡记录
这个目标是因为卡哥的教程里还包含了很多扩展和延申的题目,但是因为我时间有限,所以先打算主要过一遍,如果有机会二刷再细致来吧

二分查找

触发条件:
二分查找的主要条件是有序,只有排列有了顺序才能通过二分法减少查找次数

注意事项:
查找区间**[a,b]还是[a, b)**
我个人还是比较熟悉**[a, b)这种方法右等左加**

具体代码:

class Solution:def search(self, nums: List[int], target: int) -> int:left, right = 0, len(nums)  # 定义target在左闭右开的区间里,即:[left, right)while left < right:  # 因为left == right的时候,在[left, right)是无效的空间,所以使用 <middle = left + (right - left) // 2if nums[middle] > target:right = middle  # target 在左区间,在[left, middle)中elif nums[middle] < target:left = middle + 1  # target 在右区间,在[middle + 1, right)中else:return middle  # 数组中找到目标值,直接返回下标return -1  # 未找到目标值

移除元素

触发条件:
空间复杂度为O(1)(即原地移除,不能构建新的数组),移除val值后的数组大小

注意事项:
有两种方法可以解决下列问题:
①暴力法: 2个for (一个原数组、一个新数组)、O(n^2)的时间复杂度

// 时间复杂度: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;}
};

②双指针法:快指针找元素、慢指针定位置,O(n)的时间复杂度

// 时间复杂度:O(n)
// 空间复杂度:O(1)
class Solution {
public:int removeElement(vector<int>& nums, int val) {int slowIndex = 0;for (int fastIndex = 0; fastIndex < nums.size(); fastIndex++) {if (val != nums[fastIndex]) {nums[slowIndex++] = nums[fastIndex];}}return slowIndex;}
};

虽然我更熟悉python,但是感觉这里C++的代码更有感觉,更好理解

以下是我的python代码:

class Solution:def removeElement(self, nums: List[int], val: int) -> int:slowindex = 0fastindex = 0num_long = len(nums)while fastindex < num_long:if val != nums[fastindex]:nums[slowindex] = nums[fastindex]slowindex += 1fastindex += 1 return slowindex

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/722606.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Altium Designer 22 性能优化

目录 AD22 使用起来很卡&#xff0c;完全受不了&#xff0c;卡到我的快捷鼠标宏都无法使用&#xff0c;来试着优化一下它。 每点完一步&#xff0c;都需要点击应用&#xff0c;否则不下心关掉了会很难受 打开右上角齿轮进入设置&#xff0c;取消勾选这几个勾&#xff1a; 接…

java spring 03 启动细节

spring启动类ClassPathXmlApplicationContext&#xff0c;读取xml文件并且创建bean public ClassPathXmlApplicationContext(String[] configLocations, boolean refresh, Nullable ApplicationContext parent)throws BeansException {super(parent);setConfigLocations(confi…

oracle 表中的rowid会变动吗

oracle中访问select能够以最快的方式访问表中的一行的方法就是使用rowid,但是我们并不能使用rowid作为表主键。 在Oracle数据库中&#xff0c;ROWID是一个伪列&#xff0c;用于唯一标识表中的每一行记录。它起着几个关键的作用&#xff1a; 唯一标识&#xff1a;ROWID可以唯一…

python 亲测有效:无法连接互联网,离线部署python运行环境与安装包

**这里写目录标题** 安装包准备-在网络条件下下载所需要的第三方库安装包一、提取第三方库目录到requirements.txt二、批量下载requirements.txt的whl文件 安装包复制到无网络条件下&#xff0c;安装第三方库安装包**可能存在的问题 报错信息&#xff0c;欢迎私信&#xff0c;指…

android开发框架mvp,Android面试心得必备技能储备详解

面试复习路线图 我之前复习&#xff0c;大多都在20点以后&#xff0c;因为晚上比较能集中注意力&#xff0c;制定一个学习计划&#xff0c;切勿零散的复习&#xff0c;最好是系统的复习&#xff0c;才能胜却在握 主要内容如下&#xff1a; BAT的面试题目相关性能优化相关相关…

Qt之插件

插件结构 #mermaid-svg-HMxjwDgwwRejLSQ5 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-HMxjwDgwwRejLSQ5 .error-icon{fill:#552222;}#mermaid-svg-HMxjwDgwwRejLSQ5 .error-text{fill:#552222;stroke:#552222;}#…

算法设计.

文章目录 1. 贪心算法&#xff1a;只看当前1.1 零钱兑换问题&#xff1a;力扣322 2. 活动选择问题3. 动态规划3.1 不同路径&#xff1a;3.2 0-1背包问题3.3 完全背包问题3.4 零钱兑换-动态规划 4. 最长公共字串--动态规划5. 最长公共子序列6. 最长递增子序列7. 打家劫舍8. 全排…

事务、视图、索引、数据备份和恢复

1.事务 事务&#xff08;TRANSACTION&#xff09;是一种机制、一个操作序列&#xff0c;包含了一组数据库操作命令&#xff0c;并且把所有的命令作为一个整体一起向系统提交或撤销操作请求&#xff0c;即这一组数据库操作命令要么都执行&#xff0c;要么都不执行。 事务是一个不…

信息熵 (Entropy)

在深度学习和机器学习中&#xff0c;熵是一个衡量不确定性或信息量的关键概念。它在各个方面发挥着作用&#xff0c;从数据的压缩和分布的特性分析&#xff0c;到模型的正则化和决策过程的优化。以下是熵在深度学习中的一些关键知识点&#xff1a; 信息熵 (Entropy) 信息熵是…

04. Nginx入门-Nginx WEB模块

测试环境 此处使用的yum安装的Nginx路径。 此处域名均在本地配置hosts。 主配置文件 路径&#xff1a;/etc/nginx/nginx.conf user nginx; worker_processes auto;error_log /var/log/nginx/error.log notice; pid /var/run/nginx.pid;events {worker_connection…

如何使用宝塔面板部署MySQL数据库,并结合内网穿透实现固定公网地址远程连接

文章目录 前言1.Mysql服务安装2.创建数据库3.安装cpolar3.1 开放局域网端口3.2 创建HTTP隧道 4.远程连接5.固定TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址 前言 宝塔面板的简易操作性,使得运维难度降低,简化了Linux命令行进行繁琐的配置,下面简单几…

Android drawable selector

Android drawable selector 描述使用备份背景颜色 描述 Android 可绘制选择器&#xff08;drawable selector&#xff09;是一种可根据不同状态显示不同可绘制对象的 XML 资源。它通常用于实现按钮、列表项等控件的状态变化效果。 可绘制选择器的基本结构 一个可绘制选择器由…

Mybatis-Plus——04,自动填充时间(新注解)

自动填充&#xff08;新注解&#xff09; 一、数据库添加两个字段二、实体类字段属性上增加注解三、编写填充器四、查看结果4.1 插入结果4.2 修改结果 五、同步修改5.1实体类属性改成 INSERT_UPDATE5.2 在填充器的方法这里加上 updateTime5.3 查看结果————————创作不易…

【前缀和】AcWing. 562 / Google Kickstart2018 Round H Problem B《壁画》(c++)

1.题目说明 Thanh 想在一面被均分为 N 段的墙上画一幅精美的壁画。 每段墙面都有一个美观评分&#xff0c;这表示它的美观程度&#xff08;如果它的上面有画的话&#xff09;。 不幸的是&#xff0c;由于洪水泛滥&#xff0c;墙体开始崩溃&#xff0c;所以他需要加快他的作画…

视频号爆爽短剧推广,一键搬运,傻瓜式操作,日入2000+

首先&#xff0c;我想问下有没有人尝试过短剧推广&#xff0c;是否感觉最近短剧推广变得困难&#xff0c;或者收益甚微。这可能是因为许多人都在抖音、快手等大型平台上进行短剧推广&#xff0c;竞争非常激烈&#xff0c;就像在争夺一块有限的蛋糕&#xff0c;自然难以获得满意…

一键生成超好用的简历设计模板

对于缺乏工作经验和职业规划的应届生而言&#xff0c;使用简历设计平台&#xff0c;辅助我们完成简历分区、排版和美化流程&#xff0c;早就成为简历设计环节的 “潜规则”。这里我们挑选了 5 个能够实现免费下载、一键生成的简历设计平台&#xff0c;供大家参考借鉴。 即时设…

剑指RT-DETR改进RepVB:最新重参数化结构 顶会二次改进升级版,最新开源移动端网络架构

💡本篇内容:剑指RT-DETR改进RepVB:最新重参数化结构 顶会2023 二次改进升级版 最新开源移动端网络架构,速度贼快 💡🚀🚀🚀本博客 改进源代码改进 适用于 RT-DETR 按步骤操作运行改进后的代码即可 💡:重点:该专栏《剑指RT-DETR原创改进》只更新改进 RT-DETR …

与hr沟通的话术记录

投简历的时候&#xff0c;能不能获得面试机会&#xff0c;取决于hr是否足够信赖你的简历。如果人家不够信赖你的简历&#xff0c;相信你也没有面试机会。 然后&#xff0c;第二个就是&#xff0c;与hr在沟通的时候&#xff0c;不要谈及自己的缺点&#xff0c;无论是面试前&…

洛谷P1888 三角函数

输入一组勾股数 a,b,c&#xff08;abc&#xff09;&#xff0c;用分数格式输出其较小锐角的正弦值。&#xff08;要求约分。&#xff09; 输入格式 一行&#xff0c;包含三个正整数&#xff0c;即勾股数a,b,c&#xff08;无大小顺序&#xff09;。 输出格式 一行&#xff0…

LLaMA模型的发布与创新潮流

时间线从2023年2月24日开始&#xff0c;Meta推出了LLaMA模型&#xff0c;虽然开源了代码&#xff0c;却没有开源模型权重。LLaMA模型可以说是相对较小的&#xff0c;拥有7B、13B、33B和65B参数的几种版本&#xff0c;训练时间相对较长&#xff0c;因此相对于其大小而言能力强大…